在上一节,我们介绍了Python的argparse模块,包括:argparse模块中一些常用的类和函数。在这一节,我们将介绍Python的shutil模块。shutil模块是一个用于文件和文件夹操作的实用模块,它提供了一组用于处理文件和文件夹的高级接口,包括:文件和文件夹的复制、删除、移动、重命名等操作。shutil模块是Python标准库中的一部分,因此无需安装任何第三方库即可直接使用。
下面,我们将逐一介绍shutil模块中一些常用的函数。
shutil.copy(src, dst)函数用于复制文件src到dst。如果目标文件已存在,则覆盖它。这个函数只会复制文件的内容,不会复制文件的元数据,比如:修改时间、访问权限等。如果需要完整地复制文件,则应该使用下面的shutil.copy2函数。
import shutil
# 复制文件
shutil.copy('path_to_src_file', 'path_to_dest_dir')
上面的示例代码会将"path_to_src_file"文件复制到"path_to_dest_dir"目录。如果目标目录不存在,则shutil.copy函数会抛出一个异常。
shutil.copy2(src, dst)函数用于复制文件src到dst,同时保留原始文件的元数据,比如:修改时间、访问权限等。如果目标文件已存在,则覆盖它。
import shutil
# 复制文件
shutil.copy2('path_to_src_file', 'path_to_dest_dir')
shutil.copytree(src, dst)函数用于递归地复制文件夹src到dst。与shutil.copy和shutil.copy2不同,shutil.copytree可以复制整个目录树,而不仅仅是单个文件。如果目标目录不存在,shutil.copytree会创建它。如果目标目录已经存在,shutil.copytree会抛出一个异常。
import shutil
# 复制文件夹
shutil.copytree('path_to_src_dir', 'path_to_dest_dir')
shutil.rmtree(path)函数用于递归地删除文件夹path及其内容。如果文件夹不存在,则抛出异常。与os.rmdir 不同,shutil.rmtree可以删除一个包含文件和子目录的目录树。如果目录树中存在任何文件或子目录,os.rmdir会抛出一个异常。
import shutil
# 删除文件夹
shutil.rmtree('path_to_dir')
shutil.move(src, dst)函数用于将文件或文件夹src移动到dst。如果目标位置已存在同名文件或文件夹,则覆盖它。
import shutil
# 将文件移动到另一个目录
shutil.move('path_to_src_file', 'path_to_dest_dir')
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=False, owner=None, group=None, logger=None)函数用于创建一个压缩文件,返回其名称。其各个参数的具体含义如下。
base_name:要创建的归档文件的基本名称,可以包含路径。
format:归档文件的格式,比如:'zip'、'tar'、'gztar' 等。
root_dir:要归档的目录树的根目录。如果未指定,则使用当前目录。
base_dir:相对于root_dir的基准目录,用于确定要归档的文件。如果未指定,则使用root_dir。
verbose:日志记录级别,0表示不记录,大于0表示记录。
dry_run:如果为True,则只打印要执行的操作,而不实际执行。
owner、group:归档文件的用户和组,仅在Unix系统上有效。
logger:用于记录日志的logger对象。
import shutil
# 创建一个名为archive.zip的zip归档文件,包含path_to_dir目录下的所有文件和子目录
shutil.make_archive('archive', 'zip', 'path_to_dir')
shutil.unpack_archive(filename, extract_dir, format=None)函数用于解压缩给定的压缩文件到指定的目录。其各个参数的具体含义如下。
filename:要解压缩的归档文件的路径。
extract_dir:解压缩的目标目录。
format:归档文件的格式,比如:'zip'、'tar'、'gztar' 等。如果未指定,则根据文件名自动检测。
pwd:用于解压缩加密归档文件的密码。
import shutil
# 解压缩名为archive.zip的归档文件到path_to_dir目录
shutil.unpack_archive('archive.zip', 'path_to_dir')
shutil.disk_usage(path)函数用于返回指定路径的磁盘使用情况。这个函数会返回一个元组,包含三个属性:指定路径的总磁盘空间(total)、指定路径中被占用的磁盘空间(used)、指定路径中未被占用的磁盘空间(free),都以字节数为单位进行表示。
import shutil
info = shutil.disk_usage('./')
# 输出:usage(total=268436500480, used=36055289856, free=232381210624)
print(info)