shuttil 模块 包含一些处理文件的函数。
import shutil 引入包
shutil.copy('C:\\a\\1.txt','C:\\b') 将1.txt文件复制到路径C:\\b中。
shutil.copy('C:\\a\\1.txt','C:\\b\\33.txt') 将1.txt文件复制到C:\\b中并改名字为33.txt
需要注意的是使用shutil.copy(), 如果b文件夹中有相同名字的文件,那么b文件中的文件将被覆盖。已测试
shutil.copytree(‘G:\\a’,'G:\\b')
创建一个新的文件夹G:\\b,并将G:\\a整个文件复制到b下 ,相当于给a做了一个备份,不会覆盖相同名称的文件夹,会报错
shutil.move(‘G:\\a\\22.txt’,'G:\\c') 使用方法和shutil.copy一样,如果G:\\c文件夹中有22.txt文件 他将会被覆盖掉,没有c文件夹会报错
删除文件和文件夹
shutil.retree(path) 将删除path处的文件夹,文件夹和里面的文件都会被删除。需要注意的是使用shutil.retree()删除的文件不可以被恢复。
os模块中也有函数可以删除
os.unlink('G:\\python学习\\222\\2.txt') 将删除2.txt文件
os.rmdir(path) 将删除path处的文件夹,但是文件夹必须为空
比较安全的是使用send2trash模块里的send2trash函数来删除文件和文件夹。此函数将删除的文件和文件夹放到回收站,可以从回收站恢复。
send2trash.send2trash('G:\\python学习\\222\\2.txt')
遍历文件夹
os.walk(‘文件路径’) 将返回三个值
1.返回当前目录的字符串
2.当前文件夹中子文件夹中的字符串列表
3.当前文件夹在中的文件字符串列表
G:\python学习\222 #主文件夹包含一个子文件夹G:\python学习\222\2和1.txt文件,子文件夹内没有文件。
import os ,shutil for fold,sub,fil in os.walk('G:\\python学习\\222'): print('我是fold',fold) print('我是sub',sub) print('我是fil',fil)
我是fold G:\python学习\222
我是sub ['2'] #子文件夹的名字
我是fil ['1.txt']
我是fold G:\python学习\222\2 #这个文件夹里面是空的所有返回的另外两个值也是空的列表。
我是sub []
我是fil []
由此可见
第一个返回值主文件夹,字符串
第二个返回值是主文件夹中的子文件夹的名字,列表
第三个返回值是主文件夹中的文件,列表
然后开始迭代
同上遍历子文件夹