shutil
Copy file
如果在没有shutil
的情况下拷贝文件是这个做的
>>> s_file=open('source_file.txt')
>>> d_file=open('dest_file.txt')
>>> d_file.write(s.read())
>>> d_file.flush()
这样做也行,不过假如源文件是很大的文件,这样做会把文件里的数据全部灌进内存,这样不太好
所以用shutil
来完成拷贝文件
copyfileobj
>>> s_file=open('source_file.txt')
>>> d_file=open('dest_file.txt')
>>> shutil.copyfileobj(s,d)
>>> d_file.flush()
copyfile
或者可以使用这种方法,源路径、目标路径
shutil.copyfile('srcfile', 'dstfile')
copytree
拷贝目录
$ mkdir -p 1/2/3/4/5/6
>>> shutil.copytree('1', '2')
rmtree
删除目录
>>> shutil.rmtree('2')
make_archive
打包压缩
# zip will ignore empty floder
>>> shutil.make_archive("1", format="zip", root_dir="1")
>>> shutil.make_archive("1", format="gztar", root_dir="1")
extract zip
>>> import zipfile
>>> z = zipfile.ZipFile('1.zip','r')
>>> z.extractall()
extract tar file
>>> import tarfile
>>> tar = tarfile.open('1.tar.gz')
>>> tar.extractall()
总结
最后总结下shutil
的功能
- 小文件拷贝用
copyfile
- 大文件拷贝用
copyfileobj
- 拷贝目录用
copytree
- 删除目录用
rmtree
- 压缩文件用
make_archive
- 解压的话调用其他模块
zipfile
或者tarfile
等等