shutil模块是Python标准库的一部分,它提供了一系列高层次的文件操作功能。通过使用shutil模块,我们可以轻松地完成文件和目录的复制、移动、删除、打包等操作。本文将详细介绍shutil模块的使用方法,帮助读者轻松掌握文件和目录操作技巧。
一、shutil模块介绍
shutil模块可以看作是shell工具(sh util)的Python版本,它提供了一些针对文件和文件夹的高级操作,如拷贝、删除、移动等。shutil模块是对os模块的补充,使得文件操作更加简单高效。
二、部分常用方法介绍
2.1 复制文件和目录
2.1.1 shutil.copyfileobj()
shutil.copyfileobj(fsrc, fdst, length=161024)
:复制对象fsrc
的内容到fdst
。如果fdst
不存在则自动创建,length
表示缓冲大小,如果是负数表示直接复制,默认值为161024。
import shutil
with open('folder1/fsrc.txt', 'r') as fsrc, open('folder1/fdst.txt', 'w') as fdst:
shutil.copyfileobj(fsrc, fdst, length=161024)
2.1.2 shutil.copyfile()
shutil.copyfile(src, dst)
:复制文件src
的内容到dst
。如果dst
不存在则自动创建,src
和dst
是字符串类型的路径名。如果src
和dst
指向同一个文件,抛出SameFileError
。
shutil.copyfile('folder1/fsrc.txt', 'folder1/fdst.txt')
2.1.3 shutil.copymode()
shutil.copymode(src, dst)
:复制文件src
的权限到dst
。src
和dst
是字符串类型的路径名。
shutil.copymode('folder1/fsrc.txt', 'folder1/fdst.txt')
2.1.4 shutil.copystat()
shutil.copystat(src, dst)
:复制文件src
的元数据到dst
。
shutil.copystat('folder1/fsrc.txt', 'folder1/fdst.txt')
2.1.5 shutil.copy()
shutil.copy(src, dst)
:复制文件src
到dst
。
shutil.copy('folder1/fsrc.txt', 'folder1/fdst.txt')
2.1.6 shutil.copy2()
shutil.copy2(src, dst)
:复制文件src
到dst
,同时保留文件的元数据。
shutil.copy2('folder1/fsrc.txt', 'folder1/fdst.txt')
2.1.7 shutil.copytree()
shutil.copytree(src, dst, symlinks=False, ignore=None)
:递归地复制整个目录结构。symlinks
参数控制是否复制符号链接,ignore
参数用于忽略某些文件或目录。
shutil.copytree('sourcedirectory', 'destinationdirectory')
2.2 删除文件和目录(慎用)
2.2.1 shutil.rmtree()
shutil.rmtree(path, ignore_errors=False, onerror=None)
:递归地删除目录及其内容。
shutil.rmtree('folder1')
2.3 移动和重命名
2.3.1 shutil.move()
shutil.move(src, dst)
:移动文件或目录。可以用于重命名文件或将文件或目录从一个位置移动到另一个位置。
shutil.move('folder1/fsrc.txt', 'folder1/fdst.txt')
2.4 打包与解包
2.4.1 shutil.makearchive()
shutil.makearchive(rootdir, prefix='', base_dir='')
:将目录rootdir
打包为一个归档文件。
shutil.makearchive('folder1', prefix='archive', base_dir='')
2.4.2 shutil.unpackarchive()
shutil.unpackarchive(filename, extract_dir='')
:解包归档文件。
shutil.unpackarchive('archive.tar.gz', extract_dir='folder2')
三、总结
shutil模块提供了许多实用的文件和目录操作功能,通过本文的介绍,相信读者已经对shutil模块有了初步的了解。在实际开发过程中,熟练掌握shutil模块的使用将大大提高我们的工作效率。