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不存在则自动创建,srcdst是字符串类型的路径名。如果srcdst指向同一个文件,抛出SameFileError

shutil.copyfile('folder1/fsrc.txt', 'folder1/fdst.txt')

2.1.3 shutil.copymode()

shutil.copymode(src, dst):复制文件src的权限到dstsrcdst是字符串类型的路径名。

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):复制文件srcdst

shutil.copy('folder1/fsrc.txt', 'folder1/fdst.txt')

2.1.6 shutil.copy2()

shutil.copy2(src, dst):复制文件srcdst,同时保留文件的元数据。

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模块的使用将大大提高我们的工作效率。