本文用shutil库,实现对文件的操作(复制、移动)和对文件夹的操作(复制、移动、删除)的使用举例。
官方文档:https://docs.python.org/3.9/library/shutil.html
一、复制文件
1.copy(src, dst)
- src是文件,dst可以是文件或目录
- 把src文件复制到目录dst目录中(前提是存在dst目录)
- 如果不存在dst目录,会复制内容保存成一个test文件,相当于复制文件了。
| 12
 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文件的修改日期这些会不变化。
| 12
 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文件中,如果原文件存在,会覆盖原内容
| 12
 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文件中,如果原文件存在,会覆盖原内容
| 12
 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文件夹不能已存在)
| 12
 3
 4
 5
 
 | import shutil
 src = r'D:\test'
 dst = r'D:\test3'
 shutil.copytree(src, dst)
 
 | 
三、删除目录
6.rmtree(path)
| 12
 3
 4
 
 | import shutil
 path= r'D:\test3'
 shutil.rmtree(path)
 
 | 
四、移动文件或目录
7.move(src, dst)
| 12
 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)
 
 |