文件夹,又称目录。关于目录操作的函数、对象等主要集中在三个标准库:os、os.path、shutil。
一、os 模块 ———— 基本操作
1、创建新目录
(1)os.mkdir(r’路径/目录名’)
创建指定的目录,无返回值,创建不成功则抛出异常。为了避免斜杠与反斜杠引起的麻烦,'路径/目录名’应该用原始字符串形式,即在前面加上r 或 R。例如:
import os
os.mkdir(r'C:/Users/Administrator/Desktop/测试目录') # 创建目录:测试目录
os.mkdir(r'C:/Users/Administrator/Desktop/测试目录') # FileExistsError: 已存在
(2)os.makedirs(r’路径/目录名’)
与 os.mkdir() 类似,也是创建目录,无返回值,但如果路径中的目录如果还不存在,则一并创建。例如:
import os
os.mkdir(r'C:/Users/Administrator/Desktop/测试目录/aa/bb/cc/dd') # FileNotFoundError:找不到指定的路径
os.makedirs(r'C:/Users/Administrator/Desktop/测试目录/aa/bb/cc/dd') # 创建目录:aa、bb、cc、dd
2、重命名和移动目录
os.rename(r’路径/旧目录名’,r’路径/新目录名’)
这个函数兼有重命名和移动的功能,无返回值,重命名或移动不成功则抛出异常。当前后路径一致时,进行“重命名”;当前后路径不一致时,进行“移动”。例如:
import os
os.replace(r'C:/Users/Administrator/Desktop/测试目录/aa/bb/cc/dd',r'C:/Users/Administrator/Desktop/测试目录/aa/bb/cc/newdd') # dd 目录重命名为:newdd
os.replace(r'C:/Users/Administrator/Desktop/测试目录/aa/bb/cc',r'C:/Users/Administrator/Desktop/测试目录/aa/newcc') # cc 目录被移动,且重命名为:newcc
3、删除目录
os.rmdir(r’路径/目录名’)
删除指定的目录,无返回值,删除不成功则抛出异常。只能删除空目录,其中有子目录或文件的目录不能被删除。例如:
import os
os.rmdir(r'C:/Users/Administrator/Desktop/测试目录/aa/newcc/newdd') # newdd 目录被删除
os.rmdir(r'C:/Users/Administrator/Desktop/测试目录/aa') # OSError:[WinError 145] 目录不是空的
4、取目录中的所有内容
os.listdir(r’路径/目录名’)
返回一个列表,该列表包含了目录中的所有文件与目录的名称。例如:
import os
print(os.listdir(r'C:/Users/Administrator/Desktop/测试目录/aa'))
# ['aa-文件一.txt', 'aa-文件三.txt', 'aa-文件二.txt', 'aa-文件四.txt', 'bb', 'newcc']
5、取目录及其子目录中的所有内容
os.walk(r’路径/目录名’)
取目录、子目录、子子目录…中的所有内容,返回一个生成器对象。返回的生成器对象的元素为元组。
一个目录或子目录构成一个元组:(路径/目录,[子目录列表],[文件列表])。例如:
import os.path
t = os.walk(r'C:/Users/Administrator/Desktop/测试目录')
print(t) #
print([x for x in t])
# [('C:/Users/Administrator/Desktop/测试目录',
# ['aa'],
# []),
# ('C:/Users/Administrator/Desktop/测试目录\\aa',
# ['bb', 'newcc'],
# ['aa-文件一.txt', 'aa-文件三.txt', 'aa-文件二.txt', 'aa-文件四.txt']),
# ('C:/Users/Administrator/Desktop/测试目录\\aa\\bb',
# [],
# ['bb-文件一.txt', 'bb-文件三.txt', 'bb-文件二.txt', 'bb-文件四.txt']),
# ('C:/Users/Administrator/Desktop/测试目录\\aa\\newcc',
# ['dd'],
# ['cc-文件一.txt', 'cc-文件三.txt', 'cc-文件二.txt', 'cc-文件四.txt']),
# ('C:/Users/Administrator/Desktop/测试目录\\aa\\newcc\\dd',
# [],
# ['dd-文件一.txt', 'dd-文件二.txt'])]
二、os.path 模块 ———— 路径操作
1、分隔路径和目录
os.path.split(r’路径/目录名’),返回组成的元组:(路径,目录名)。
os.path.dirname((r’路径/目录名’),返回路径。
os.path.basename((r’路径/目录名’),返回目录名。
例如:
import os.path
print(os.path.split(r'C:/Users/Administrator/Desktop/测试目录')) # ('C:/Users/Administrator/Desktop', '测试目录')
print(os.path.dirname(r'C:/Users/Administrator/Desktop/测试目录')) # C:/Users/Administrator/Desktop
print(os.path.basename(r'C:/Users/Administrator/Desktop/测试目录')) # 测试目录
2、判断是否目录
os.path.isdir(r’路径’),是目录则返回True,不是目录或目录不存在返回False。例如:
import os.path
print(os.path.isdir(r'C:/Users/Administrator/Desktop/测试目录')) # True
print(os.path.isdir(r'C:/Users/Administrator/Desktop/测试目录aaa')) # False
3、连接多个路径
os.path.join(r’路径1’, r’路径2’, r’路径3’…),返回连接后的路径。例如:
import os.path
print(os.path.join(r'C:/Users',r'Administrator',r'Desktop/测试目录')) # C:/Users\Administrator\Desktop/测试目录
三、shutil 模块(shell utility 的缩写,外壳实用程序) ———— 高级操作
1、递归复制目录
copytree(r’路径/旧目录名’,r’路径/新目录名’)
复制目录,返回“路径/新目录名”。例如:
import shutil
print(shutil.copytree(r'C:/Users/Administrator/Desktop/测试目录/aa/bb/cc',r'C:/Users/Administrator/Desktop/测试目录/aa/cc'))
# aa 中新增复制来的目录 cc :C:/Users/Administrator/Desktop/测试目录/aa/cc
2、递归删除目录
rmtree(r’路径/目录名’)
删除指定的目录,无返回值。
import shutil
shutil.rmtree(r'C:/Users/Administrator/Desktop/测试目录/aa/cc') # cc 目录及其目录中的内容被删除