`
scm002
  • 浏览: 309243 次
社区版块
存档分类
最新评论

Python 3 教程二:文件,目录和路径

 
阅读更多

Python 3 教程二:文件,目录和路径

 

1 遍历文件夹和文件


<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->import  os
import  os.path
#  os,os.path里包含大多数文件访问的函数,所以要先引入它们.
#
 请按照你的实际情况修改这个路径
rootdir  =   " d:/download "
for  parent, dirnames, filenames  in  os.walk(rootdir):
    
# case 1:
     for  dirname  in  dirnames:
        
print  ( " parent is: "   +  parent)
        
print  ( " dirname is: "   +  dirname)
    
# case 2
     for  filename  in  filenames:
        
print  ( " parent is: "   +  parent)
        
print  ( " filename with full path : "   +  os.path.join(parent, filename))

''' 知识点:

    * os.walk返回一个三元组.其中dirnames是所有文件夹名字(不包含路径),filenames是所有文件的名字(不包含路径).parent表示父目录.
    * case1 演示了如何遍历所有目录.
    * case2 演示了如何遍历所有文件.
    * os.path.join(dirname,filename) : 将形如"/a/b/c"和"d.java"变成/a/b/c/d.java".
'''

 

 

2 分割路径和文件名

 

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->import  os.path
# 常用函数有三种:分隔路径,找出文件名.找出盘符(windows系统),找出文件的扩展名.
#
根据你机器的实际情况修改下面参数.
spath = " D:/download/repository.7z "

#  case 1:
p,f = os.path.split(spath);
print ( " dir is: " + p)
print ( " file is: " + f)

#  case 2:
drv,left = os.path.splitdrive(spath);
print ( " driver is: " + drv)
print ( " left is: " + left)
#  case 3:
f,ext = os.path.splitext(spath);
print ( " f is: " + f)
print ( " ext is: " + ext)
'''
    知识点:    这三个函数都返回二元组.
    * case1 分隔目录和文件名
    * case2 分隔盘符和文件名
    * case3 分隔文件和扩展名
'''



总结:5个函数

  • os.walk(spath)
  • os.path.split(spath)
  • os.path.splitdrive(spath)
  • os.path.splitext(spath)
  • os.path.join(path1,path2)

 

3 复制文件

 

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->import  shutil
import  os
import  os.path

src
= " d:\\download\\test\\myfile1.txt "
dst
= " d:\\download\\test\\myfile2.txt "
dst2
= " d:/download/test/测试文件夹.txt "

dir1
= os.path.dirname(src)

print ( " dir1 %s " % dir1)

if (os.path.exists(src) == False):
    os.makedirs(dir1)       

f1
= open(src, " w " )
f1.write(
" line a\n " )
f1.write(
" line b\n " )
f1.close()


shutil.copyfile(src, dst)
shutil.copyfile(src, dst2)
f2
= open(dst, " r " )
for  line  in  f2:
    
print (line)

f2.close()

# 测试复制文件夹树
try :
    srcDir
= " d:/download/test "
    dstDir
= " d:/download/test2 "
    
# 如果dstDir已经存在,那么shutil.copytree方法会报错!
     # 这也意味着你不能直接用d:作为目标路径.
    shutil.copytree(srcDir, dstDir)
except  Exception as err:
    
print  (err)
    
'''
    知识点:
    * shutil.copyfile:如何复制文件
    * os.path.exists:如何判断文件夹是否存在
    * shutil.copytree:如何复制目录树    
'''


总结:4个函数

  • os.path.dirname(path)
  • os.path.exists(path)
  • shutil.copyfile(src, dst)
  • shutil.copytree(srcDir, dstDir)

 

 

4 实战:文件备份小程序

 

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->import  os
import  shutil
import  datetime

'''
作用:将目录备份到其他路径。
实际效果:
假设给定目录"/media/data/programmer/project/python" ,
备份路径"/home/diegoyun/backup/“ ,
则会将python目录备份到备份路径下,形如:
/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz..

用法:更改这两个参数.
backdir:备份目的地.
copydirs:想要备份的文件夹.
'''


def  mainLogic():
    
# add dirs you want to copy
    backdir = " d:\\test "
    
print (backdir)

    copydirs
= []
    copydirs.append(
" d:\\temp " );
    
# copydirs.append("d:\\test");
    
    

    
print ( " Copying files  =================== " )
    start
= datetime.datetime.now()

    
# gen a data folder for backup
    backdir = os.path.join(backdir,start.strftime( " %Y-%m-%d " ))
    
# print("backdir is:"+backdir)

    
    kc
= 0
    
for  d  in  copydirs:
        kc
= kc + copyFiles(d,backdir)

    end
= datetime.datetime.now()
    
print ( " Finished! =================== " )
    
print ( " Total files :  "   +  str(kc) )
    
print ( " Elapsed time :  "   +  str((end - start).seconds) + "  seconds " )

def  copyFiles(copydir,backdir):
    prefix
= getPathPrefix(copydir)
    
# print("prefix is:"+prefix )   

    i
= 0
    
for  dirpath,dirnames,filenames  in  os.walk(copydir):
        
for  name  in  filenames:
            oldpath
= os.path.join(dirpath,name)
            newpath
= omitPrefix(dirpath,prefix)
            
print ( " backdir is: " + backdir )           
            newpath
= os.path.join(backdir,newpath)
            
print ( " newpath is: " + newpath)

            
if  os.path.exists(newpath) != True:
                os.makedirs(newpath)  
            newpath
= os.path.join(newpath,name)
            
print ( " From: " + oldpath + "  to: " + newpath)
            shutil.copyfile(oldpath,newpath)
            i
= i + 1
    
return  i    

def  getPathPrefix(fullpath):
    
# Giving /media/data/programmer/project/ , get the prefix
     # /media/data/programmer/
    l = fullpath.split(os.path.sep)
    
# print(str(l[-1]=="")    
     if  l[ - 1 ] == "" :
        tmp
= l[ - 2 ]
    
else :
        tmp
= l[ - 1 ]
    
return  fullpath[0:len(fullpath) - len(tmp) - 1 ]

def  omitPrefix(fullpath,prefix):
    
# Giving /media/data/programmer/project/python/tutotial/file/test.py ,
     # and prefix is Giving /media/data/programmer/project/,
     # return path as python/tutotial/file/test.py
     return  fullpath[len(prefix) + 1 :]

mainLogic()

 

5 资源:方法详解

你可以在这里看到更多的api解释,感谢该作者: http://www.cnpython.org/docs/200/p_119.html

转:http://www.cnitblog.com/yunshichen/archive/2009/04/01/55931.html

分享到:
评论

相关推荐

    【Python学习教程】在目录中组织文件的脚本(字母顺序)

    【Python学习教程】在目录中组织文件的脚本(字母顺序) 以下是一个Python脚本示例,它可以按字母顺序自动组织文件并将它们存储在目录中。这里我们使用os和shutil模块来进行文件操作。 在这个代码示例中,我们首先...

    python指北,学习python过程中的一些总结demo.rar

    3、Python文件 4、Python日期 5、Python利器 6、Python画图 7、Python实战 施工中: Python基础算法 python 机器学习,包括机器学习的基础概念和十大核心算法以及Sklearn和Kaggle实战的小例子 PyQt制作GUI Flask前端...

    python24期全套视频编程课程百度网盘

    3. 文件操作:介绍Python的文件操作、读写文件、文件路径等知识。 4. 正则表达式:介绍正则表达式的基本语法、匹配模式、替换等操作。 5. 网络编程:介绍Python的网络编程、socket编程、TCP/UDP协议等知识。 6. ...

    Python3入门指南_v2.4.pdf

    9.8 tempfile模块: 生成临时文件和临时目录 146 十、面向对象编程 147 10.1 面向对象程序设计思想 147 10.2 面向对象相关术语 148 10.3 类与对象的基本使用 148 10.4 类封装机制 156 10.5 类继承机制 157 10.6 父类...

    100天从零到一学python、如何自学python全流程教程,自学python详细教程 100包你学会python

    这份文件记录了我在接下来的100天里,将会学习和掌握 Python 编程的全过程。从基本语法和数据结构开始,逐步深入到函数、面向对象编程、文件操作等高级主题。通过实际项目和练习,我将不断提升自己的编程技能,直至...

    python批量重命名文件,文件名自定义,不修改后缀格式版本,包含exe可执行文件和py文件

    在这个语句后面输入你要处理的大批文件路径位置,win11系统只需右键选择copy as path(复制路径)即可复制路径,粘贴输入到这个语句后面即可;win10或者win7等只要右键属性就可看到路径,复制即可。 2.第一条输入...

    【Python学习教程】编写脚本来压缩文件夹和文件

    【Python学习教程】编写脚本来压缩文件夹和文件以下是使用Python编写脚本来压缩文件夹和文件的步骤: 导入必要的模块 在开始编写代码之前,需要导入Python的zipfile模块,该模块提供了用于创建、读取和解压缩ZIP...

    相对路径和绝对路径的概念

    相对路径和绝对路径的概念

    PythonWeb开发基础教程-第2章-Django配置.pptx

    在执行django-admin startproject命令创建项目时会自动生成该文件 本节主要内容 基本配置 模板配置 数据库配置 静态资源配置 PythonWeb开发基础教程-第2章-Django配置全文共21页,当前为第3页。 2.1.1 基本配置 ...

    python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

    3.自动获取某路径下文件列表; 4.PIL截屏功能 找色点击功能思路: 抓取当前屏幕快照,指定一个坐标和颜色,如果坐标的颜色符合,则点击坐标. 1.抓取当前屏幕快照ImageGrab.grab()返回一个模式为“RGB”的图像. 2.方法im...

    Python3基础教程13-写入文件.pdf

    Python3基础教程 基础教程13-写⼊⽂件 写⼊⽂件 前⾯介绍了函数,这篇我们就利⽤Python 内构函数open来写⼊字符串到txt⽂件⾥。 直接看demo.py # 练习如何写⼈⽂件 text = "Sample Text to Save \nNew Line" ''' 调...

    Python基础教程详解(第三十一课)-读文件.doc

    Python基础教程详解 【第31课】 读文件 之前写的程序绝大多数都依赖于从命令行输入。假如某个程序需要输入很多数据,比如 一次考试的全班学生成绩,再这么输就略显痛苦了。一个常见的办法就是把学生的成绩 都保存在...

    PythonWeb开发基础教程-第3章-URL分发.pptx

    Python Web开发基础教程(Django版) PythonWeb开发基础教程-第3章-URL分发全文共37页,当前为第1页。 第3章 URL分发 本章主要内容: URL配置 URL参数传递 反向解析URL URL 命名空间 PythonWeb开发基础教程-第3章-...

    【Python入门教程】第68篇读取文本文件.pdf

    【Python⼊门教程】第68篇读取⽂本⽂件 本篇开始我们将会学习 Python 操作⽂件的⽅法,⾸先是如何读取⽂本⽂件。 快速参考 以下代码演⽰了如何从 readme.txt ⽂件中读取全部⽂本内容: with open('readme.txt') as f...

    PythonWeb开发基础教程-第3章-URL分发(1).pptx

    Python Web开发基础教程(Django版) PythonWeb开发基础教程-第3章-URL分发(1)全文共37页,当前为第1页。 第3章 URL分发 本章主要内容: URL配置 URL参数传递 反向解析URL URL 命名空间 PythonWeb开发基础教程-第3章...

    Python基础教程(标准库)

    Python标准库01 正则表达式 (re包) - Vamei ...Python标准库03 路径与文件 (os) Python标准库04 文件管理 (部分os包,shutil包) - Vamei - 博客园 Python标准库05 存储对象 (pickle包,cPickle包) - Vamei - 博客园 ...

    cvxpy安装教程 python环境

    直接用wheel安装即可,cvxpy最后安装,注意上面的包对应的是python3.8版本。如果环境是别的版本,请自行到https://www.lfd.uci.edu/~gohlke/pythonlibs/下载对应的scipy,ecos,...pip install &lt;对应版本.whl文件的路径&gt;

    python安装教程 Pycharm安装详细教程

    python安装教程和Pycharm安装详细教程,分享给大家。 首先我们来安装python 1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行...

    python安装包3.8.2版本的windows平台64位操作系统安装包.zip

    安装时可选默认安装和自定义安装,建议用户选择自定义安装,自己选择安装路径。 Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断...

    python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器

    python教程全解 白手起家,从头开启python的开发环境搭建。 一. 如何安装Python 在https://www.python.org/下载安装包。 下载下来一个exe文件,直接双击运行。 选择Install Now,立即安装。 配置环境变量:右键...

Global site tag (gtag.js) - Google Analytics