Python其实很简单第十六章目录管理
为实现按名存取,必须建立文件名与辅存空间中物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。文件目录表目至少要包含文件名、文件的类型、文件的长度、访问权限、建立时间、访问时间和文件存储地址等内容。通过前面一章的介绍,我们已经知道在文件信息中已经包含了文件名、文件类型访问权限等信息,而存储地址的信息则包含在目录信息中。
16。1路径
路径通常用一个字符串来表示,可以按照路径信息定位到一个目录或文件。如:C:UsersAdministratorPictures1。jpg这个信息可以非常方便的找到这个图片文件,C:UsersAdministratorPictures这个信息可以帮助我们找到更多的图片文件。
这里所说的路径和上网时碰到的地址含义比较相似,互联网就相当于将个人电脑可以访问的范围扩大了,互联网中的地址也是对应某一个存储空间的路径,按照地址可以访问互联网上的信息,就如同按照路径可以找到计算机中的文件一样。
在Python中,可以导入os模块来进行目录操作。
1、获取当前工作目录getcwd()函数
例:
importos
print(os。getcwd())
运行结果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38
这个路径是当前PythonIDLE所在的地址。
2、获取文件的绝对路径abspath()函数
abspath()函数是os模块的子模块path提供的一个函数。用法举例如下:
importos
print(os。path。abspath(rtest。txt))
运行结果:
C:UsersAdministratorAppDataLocalProgramsPythonPython38est。txt
16。2目录操作类函数
1、判断目录是否存在exists()函数
exists()函数是os模块的子模块path中的函数。使用方法举例如下:
importos
print(os。path。exists(rC:UsersAdministratorPictures1。jpeg))
输出结果:
True
2、创建目录mkdir()函数和makedirs()函数
mkdir()函数和makedirs()函数都是由os模块提供的,下面举例说明用法和区别。
例1:
importos
pathd:test
ifnotos。path。exists(path):
os。makedirs(path)
print(该文件目录创建成功!)
如果目录d:est已存在,则不再创建;若不存在,则创建。
例2:
importos
pathd:testtest1test11
ifnotos。path。exists(path):
os。makedirs(path)
print(该文件目录创建成功!)
虽然目录d:est已存在,但可以在其下继续创建子目录。上面的代码可以成功地创建d:estest1est11目录。
mkdir()函数和makedirs()函数用法基本一样,不同之处在于mkdir()函数只能能创建一级目录。
3、删除目录函数rmdir()函数
rmdir()函数是由os模块提供的。
例如:通过上面的例子已经建立了d:estest1est11目录,现在去删除子目录test11(此子目录为空目录),代码如下:
importos
os。rmdir(d:testtest1test11)
如果要删除的目录非空(其下还包含有文件或文件夹),则不能删除,并且出现Windows文件操作错误的提示(Python是调用操作系统命令完成文件和目录操作的)。譬如d:est目录下含有有子目录,则不能对其进行如下删除操作。
importos
os。rmdir(d:test)
此时,会出现如下错误提示:
Traceback(mostrecentcalllast):
FileC:UserszymAppDataLocalProgramsPythonPython394。py,line10,in
os。rmdir(d:test)
OSError:〔WinError145〕目录不是空的。:d:test
4、删除非空目录函数rmtree()函数
rmtree()函数是由Python内置的标准模块shutil提供的,可以删除目录及目录下的文件和子目录。如删除d:est目录及其下的子目录和文件,可用如下代码:
importshutil
shutil。rmtree(d:test)
5、遍历目录walk()函数
walk()函数是由os模块提供的。
语法格式:
os。walk(top〔,topdownTrue〔,onerrorNone〔,followlinksFalse〕〕〕)
其中,top是所要遍历的目录的地址;topdown为可选参数,为True时自上而下遍历目录,为False时自下而上遍历目录,默认值为True;onerror为可选参数,用于指定异常处理方式,默认为忽略;followlinks为可选参数,如果为True,则会遍历目录下的快捷方式(linux下是软连接symboliclink)实际所指的目录(默认关闭),如果为False,则优先遍历top的子目录。
该函数的返回值为一个三元组(root,dirs,files)。root所指的是当前正在遍历的这个文件夹的本身的地址;dirs是一个list,内容是该文件夹中所有的目录的名字(不包括子目录);files同样是list,内容是该文件夹中所有的文件(不包括子目录)。
例:遍历d:est目录及其子目录下的所有子目录和文件:
d:est目录及其下的子目录和文件
importos
pathd:test
tupsos。walk(path)函数walk()的返回值为三元组
forroot,dirs,filesintups:遍历这个三元组
fornameindirs:遍历存放目录值的元组
print(dir:,os。path。join(root,name))
fornameinfiles:遍历存放文件名值的元组
print(file:,os。path。join(root,name))
运行结果如下:
dir:d:estest1
dir:d:estest1est11
dir:d:estest1新建文件夹
file:d:estest1新建文本文档。txt
file:d:estest1est11新建文本文档。txt