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等等

results matching ""

    No results matching ""