首页 > python学习 > python的shutil模块
2019
04-29

python的shutil模块

shutil模块是python高级的文件、文件夹、压缩包处理模块,常见的有拷贝,删除,移动,创建压缩文件和解压缩文件等

拷贝文件对象:

shutil.copyfileobj(file_src, file_dst[, length])
将类似对象file_src从当前指针位置到结尾的文件内容复制到类似对象file_dst文件中。length(如果给定)是缓冲区大小。仅拷贝文件内容。

拷贝文件或元数据:

shutil.copyfile(src, dst, *, follow_symlinks=True)
将src文件的内容复制到dst文件中并返回dst。src和dst是字符串形式的"路径+文件名"。仅拷贝文件内容。
dst必须是完整的目标文件名;如果dst已经存在,它将被替换;如果src和dst指定相同文件,引发samefilerror。目标位置必须是可写的,否则将引发OSError。
如果follow_symlinks为false,而src是一个符号链接,则将创建一个新的符号链接,而不是复制src指向的文件

shutil.copymode(src, dst, *, follow_symlinks=True):仅拷贝权限。dst文件内容、所有者和所属组不受影响(前提是dst文件存在,否则报错)。

shutil.copystat(src, dst, *, follow_symlinks=True):仅拷贝文件(src和dst可以为目录)属性信息,如mode bits(权限位),atime(最后访问时间),mtime(最后修改时间),flags,在Linux上还尽可能复制“扩展属性”。文件内容、所有者和组不受影响

shutil.copy(src, dst, *, follow_symlinks=True) 拷贝文件和权限,如果dst为一个目录则将src复制到dst目录中。返回新创建文件的路径。复制文件数据和文件的权限模式,其他元数据(如文件的创建和修改时间)不被保留。

shutil.copy2(src, dst, *, follow_symlinks=True):与copy()相同,但copy2()会尽可能的尝试保留所有元数据

shutil.ignore_patterns(*globs)
此工厂函数创建一个函数,该函数可以用作copytree()的ignore参数值,拷贝的时候忽略与提供的样式模式匹配的文件和目录,如shutil.ignore_patterns('*.pyc', 'tmp*')

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)
以递归方式复制src上的整个目录树,并返回目标目录(src和dst为目录)。dst指定的目标目录必须不存在,它将被创建,并且缺少父目录。
如果给定了ignore,它必须是一个可调用的,它将接收copytree()访问的目录以及OS.listdir()返回的目录作为其参数,而且必须返回相对于当前目录的目录名和文件名序列(即第二个参数中的项的子集),然后在复制过程中将忽略这些名称。
copy_function必须是一个可调用的,用于复制每个文件。默认使用shutil.copy2(),也可以使用任何支持相同签名的函数如shutil.copy()

删除文件:

shutil.rmtree(path, ignore_errors=False, onerror=None)
递归的去删除文件,路径必须指向目录(而不是指向目录的符号链接)。如果ignore_errors为true,则忽略由于删除失败而导致的错误;如果为false,则通过调用onerror指定的处理程序来处理这些错误,如果onerror忽略,则会引发异常。

移动/重命名文件:

shutil.move(src, dst, copy_function=copy2)
递归地移动文件或目录并返回目标。如果目标是一个已存在的目录,那么SRC将被移动到该目录中,该函数可以用来重命名。

统计目录磁盘使用情况:

shutil.disk_usage(path)
以命名元组的形式返回给定路径的磁盘使用情况统计信息,属性为total、used和free,即总空间、已用空间和可用空间(以字节为单位)。在Windows上,path必须是目录;在UNIX上,path可以是文件或目录。

更改文件或目录的所有者或所属组:

shutil.chown(path, user=None, group=None):更改给定路径的所有者或所属组

创建压缩文件:

shutil.make_archive(base_name, format[, root_dir[, base_dir[, dry_run[, owner[, group[, logger]]]]]])
创建一个压缩文件(如zip或tar)并返回其名称
base_name是要创建的包括路径的不包含扩展名的文件名。
format为文件扩展名,可用的扩展名:“zip”(依赖zlib模块)、“tar”、“gztar”(依赖zlib模块)、“bztar”(依赖bz2模块)或“xztar”(依赖lzma模块)。
root_dir指定一个将成为存档根目录的目录
base_dir是我们开始存档的目录,是存档中所有文件和目录的通用前缀。
root_dir和base_dir都默认为当前目录
如果dry_run为true,则不会创建压缩文件,但执行的操作将记录到记录器中。
owner,group创建压缩文件时使用所有者和组。默认使用当前所有者和组。
logger用于记录日志,通常是logging.logger的实例对象。

shutil.get_archive_formats():返回支持的存档格式(文件扩展名)列表,每个元素都是一个元组(名称、描述)

shutil.register_archive_format(name, function[, extra_args[, description='']])
注册一个格式名并绑定到一个压缩时使用的程序
function是用于解包存档文件的可调用函数。可调用文件将接收要创建的文件的基目录名,然后接收要从中开始存档的基目录(默认为os.curdir)。其他参数作为关键字参数传递:owner、group、dry_run和logger(在make_archive()中传递)。
extra_args参数是(name,value)对的序列,当使用压缩文件调用function时,这些将用作额外的关键字参数。
description由get_archive_formats()返回存档程序列表中使用。

shutil.unregister_archive_format(name):从支持的格式列表中删除存档格式名称

解压缩文件:

shutil.unpack_archive(filename[, extract_dir[, format]])
解包文件。filename是完整路径。extract_dir是解包的目标目录名称。如果未提供使用当前工作目录。format如果指定则使用指定算法解包,如果format未指定将使用压缩文件的扩展名,如果format未注册解包程序,引发ValueError

shutil.register_unpack_format(name, extensions, function[, extra_args[, description]])
注册解包格式。name是格式的名称,extensions是与格式相对应的扩展名列表。
function是用于解包存档文件的可调用函数。可调用文件将接收存档文件的路径,后跟存档文件的解包目录。
extra_args额外的参数是(名称、值)元组的序列,将作为关键字参数传递给可调用对象。
description由get_unpack_formats()返回注册的解压缩格式列表中使用

shutil.unregister_unpack_format(name):注销解包格式

shutil.get_unpack_formats():返回所有已注册的解包格式的列表。列表的每个元素都是一个元组(名称、扩展名、描述)

终端窗口大小:

shutil.get_terminal_size(fallback=(columns, lines))
获取终端窗口的大小。返回值是类型为os.terminal_size的命名元组

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。