一、os和os.path模块
在Python中,内置了os模块及其子模块so.path用于对目录或文件进行操作。在使用os模块或者os.path模块时,需要先用import导入。 import os
- os.name
用于获取操作系统类型;Windows系统输入结果为nt,如果是posix,则表示是Linux、Unix或者MacOS操作系统。 - os.linesep
用于获取当前操作系统上的换行符 - os.sep
用于获取当前操作系统所使用的路径分隔符。 - os模块操作目录的函数
|函数| 说明| |–|--| |os.getcwd() | 返回当前工作目录 | |os.getcwdb() | 返回一个当前工作目录的Unicode对象 | |os.listdir(path) | 返回path指定的文件夹包含的文件或文件夹的名字的列表。 | |os.mkdir(path[, mode]) | 创建目录 | |os.mkdir(path1/path2…[, mode]) | 创建多级目录 | |os.rmdir(path) | 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。 | |os.removedirs(path)| 递归删除目录。 | |os.chdir(path) |递归删除目录。 |
函数 | 说明 |
---|
os.getcwd() | 返回当前工作目录 | os.getcwdb() | 返回一个当前工作目录的Unicode对象 | os.listdir(path) | 返回path指定的文件夹包含的文件或文件夹的名字的列表。 | os.mkdir(path[, mode]) | 创建单级目录 | os.mkdir(path1/path2…[, mode]) | 创建多级目录 | os.rmdir(path) | 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。 | os.removedirs(path) | 递归删除目录。 | os.remove(filePath) | 删除指定文件,并且只能删除文件;如果path 是一个文件夹,将抛出OSError | os.chdir(path) | 把path设置为当前工作目录 | os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]]) | 输出在文件夹中的文件名通过在树中游走,向上或者向下。即是遍历目录树,返回一个元组,包含所有路劲名、所有目录列表和文件列表3个元素。 |
- os.path模块操作目录的函数
函数 | 说明 |
---|
???????os.path.abspath(path) | 根据当前工作目录路径连接该文件名后所组成的新的路径名,但这个路径不一定是真实存在的路径。 | os.path.exists(path) | 用于判断path是否存在,如果存在返回True,否则返回False。 | os.path.join((path, name) | 将目录与目录或者文件名拼接起来 | ???????os.path.split(path) | 将path分割成目录和文件名,如果给的path本身就是目录的话,也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在,以元组返回 | os.path.dirname(path) | 返回path的目录路径,就是os.path.split(path)的第一个元素。 | ???????os.path.basename(path) | 返回path最后的文件名。如果path以/或\结尾,就会返回空值。即os.path.split(path)的第二个元素 | ???????os.path.splitext(path) | 分离文件名与扩展名 | ??????????????os.path.isabs(path) | 判断path是否是绝对路径,如果是返回True,否则返回False。 | ??????????????os.path.isfile(path) | 判断path是否是文件,如果是返回True,否则返回False。必须是真实存在的文件 | ??????????????os.path.isdir(path) | 判断path是否是目录,如果是目录返回True,否则返回False。必须是真实存在的目录 | ??????????????os.path.normpath(path) | 将path转换成规范的文件路径 | ??????????????os.path.getsize(name) | 获得文件大小,如果name是目录返回结果是0L或者4096L;如果name代表的目录或文件不存在,会报WindowsError异常。 | ?????????????????????os.path.getatime(filename) | 返回文件的最后访问时间,返回的是时间戳。 | ?????????????????????os.path.getctime(filename) | 以时间戳的形式返回文件或目录的创建时间,在Unix系统上是文件最近更改的时间,在Windows上是文件或目录的创建时间。 | os.path.getmtime(filename) | 以时间戳的形式返回文件或目录的最后存取时间 |
二、路径
- 相对路径
import os
print(os.getcwd())
运行结果如下:
E:\PC\untitled\练习
- 绝对路径
import os.path
print(os.path.abspath(r"不存在目录\测试目录\写入文件.txt"))
运行结果如下:
E:\PC\untitled\练习\不存在目录\测试目录\写入文件.txt
- 拼接路径
可以将多个路径拼接到一起组成一个新的绝对路径
import os.path
print(os.path.join(r"G:\PC\untitled\练习","不存在目录\测试目录","写入文件.txt"))
运行结果如下:
G:\PC\untitled\练习\不存在目录\测试目录\写入文件.txt
如果拼接的路径中存在多个绝对路径时,会以从左到右最后一次出现的为准,并且该路径之前的参数都会被忽略。
import os.path
print(os.path.join(r"G:\PC\untitled\练习","不存在目录\测试目录","C:\demo\练习","写入文件.txt"))
运行结果如下:
C:\demo\练习\写入文件.txt
Process finished with exit code 0
三、判断目录是否存在
import os.path
print(os.path.exists("C:\demo\练习\写入文件.txt"))
print(os.path.exists("E:/PC/untitled/练习/test.py"))
运行结果如下:
False
True
Process finished with exit code 0
四、创建目录
- 创建一级目录
os.mkdir(path[, mode]) path:用于指定创建的目录,可以使用绝对路径,也可以使用相对路径。 mode:用于指定数值模式,默认为0777。该参数在非Unix系统上无效或被忽略。 该函数只能创建指定路径中的下一级目录,如果该目录的上一级目录不存在,则抛出FileNotFoundError异常。
import os
os.mkdir(r"D:\demo")
如果创建的路径已经存在,则将抛出异常FileExistsError异常。
import os
path = "D:\demo"
if not os.path.exists(path):
os.mkdir(r"D:\demo")
print("目录创建成功")
else:
print("该目录已经存在!")
- 创建多级目录
os.makedirs(path[, mode])
import os
os.makedirs(r"D:\demo\test\dir")
五、删除目录
- 删除单级目录
os.rmdir(path)
import os
os.rmdir(r"D:\demo\test\dir")
运行结果如下: 删除路径之前,可以先做判断路上是否存在
import os
import os.path
path = r"D:\demo\test\dir"
if not os.path.exists(path):
os.rmdir(r"D:\demo")
print("目录删除成功")
else:
print("该目录不存在!")
- 删除多级目录
os.removedirs(path) 所有非空目录都会被删除
import os
os.removedirs(r"D:\demo\test")
- 删除非空目录
使用shutil模块的rmtree()函数
import shutil
shutil.rmtree(r"D:\demo\test\dir")
六、遍历目录
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]]) 参数说明:
- top:指定需要遍历的目录树的路径。
- topdown:可选参数,默认值是“True”,表示先返回目录树下的文件,然后遍历目录树下的子目录。设为False时,表示先遍历目录树下的子目录,返回子目录下的文件,最后返回根目录下的文件。
- onerror:默认值是“None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。
- followlinks:可选参数,默认情况下,walk()函数不会向下转换成解析到目录的符号链接,将该参数值设置为True,表示用于指定在支持的系统上访问由符号链接指向的目录。
- 返回值:返回一个包含3个元素(dirpath、dirnames、filenames)的元组生成器对象。其中,dirpath表示当前遍历的路径,是一个字符串,dirnames表示当前路径下包含的子目录,是一个列表;filenames表示当前路径下包含的文件,也是一个列表。
import os
tre =os.walk(r"D:\demo\test")
运行结果如下:
('D:\\demo\\test', ['dir', 'dir1'], ['新建文本文档 (2).txt', '新建文本文档.txt'])
('D:\\demo\\test\\dir', [], [])
('D:\\demo\\test\\dir1', [], ['新建文本文档.txt'])
Process finished with exit code 0
import os
path = r"D:\demo\test"
print("【",path,"】目录下包含的文件和目录")
for root ,dirs ,files in os.walk(path,topdown=True):
for name in dirs:
print("目录",os.path.join(root,name))
for name in files:
print("文件路径",os.path.join(root,name))
运行结果如下:
【 D:\demo\test 】目录下包含的文件和目录
目录 D:\demo\test\dir
目录 D:\demo\test\dir1
文件路径 D:\demo\test\新建文本文档 (2).txt
文件路径 D:\demo\test\新建文本文档.txt
文件路径 D:\demo\test\dir1\新建文本文档.txt
Process finished with exit code 0
|