本文用shutil库,实现对文件的操作(复制、移动)和对文件夹的操作(复制、移动、删除)的使用举例。
官方文档:https://docs.python.org/3.9/library/shutil.html
一、复制文件
1.copy(src, dst)
- src是文件,dst可以是文件或目录
- 把src文件复制到目录dst目录中(前提是存在dst目录)
- 如果不存在dst目录,会复制内容保存成一个test文件,相当于复制文件了。
1 2 3 4 5
| import shutil
src = r'D:\a.txt' dst = r'D:\test' shutil.copy(src, dst)
|
2.copy2(src, dst)
- src是文件,dst可以是文件或目录
- 把src文件复制到dst目录中,并保留源文件元数据(前提是存在dst目录)
- 这个和copy的区别就是复制出来的src文件的元数据能保留,比如src文件的修改日期这些会不变化。
1 2 3 4 5
| import shutil
src = r'D:\a.txt' dst = r'D:\test2' shutil.copy2(src, dst)
|
3.copyfileobj(fsrc, fdst)
- src,dst都是文件
- 把src文件内容复制到dst文件中,如果原文件存在,会覆盖原内容
1 2 3 4 5
| import shutil
src = r'D:\b.txt' dst = r'D:\test\a.txt' shutil.copyfileobj(open(src,'r'), open(dst,'w'))
|
4.copyfile(src, dst)
- src,dst都是文件
- 把src文件内容复制到dst文件中,如果原文件存在,会覆盖原内容
1 2 3 4 5
| import shutil
src = r'D:\b.txt' dst = r'D:\test\a.txt' shutil.copyfile(src, dst)
|
所以,感觉copyfileobj、copyfile这2个方法也用不着,一般直接用copy()就可以实现。
二、复制文件夹
5.copytree(src, dst)
- src,dst都是目录
- 把src文件夹复制到dst文件夹(dst文件夹不能已存在)
1 2 3 4 5
| import shutil
src = r'D:\test' dst = r'D:\test3' shutil.copytree(src, dst)
|
三、删除目录
6.rmtree(path)
1 2 3 4
| import shutil
path= r'D:\test3' shutil.rmtree(path)
|
四、移动文件或目录
7.move(src, dst)
1 2 3 4 5 6 7
| import shutil
src = r'D:\test' src2 = r'D:\test2\b.txt' dst = r'D:\test3' shutil.move(src, dst) shutil.move(src2, dst)
|