Python shutil 模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python shutil 模块相关的知识,希望对你有一定的参考价值。

参考技术A

shutil 可以看作 sh + util,即 shell 工具之意,该模块提供了一些针对文件和文件夹的高级操作,如:拷贝、删除、移动等,shutil 模块是对 os 模块的补充。

copyfileobj(fsrc, fdst, length=16*1024)

复制对象 fsrc 的内容到 fdst,如果 fdst 不存在则自动创建,length 表示缓冲大小,如果是负数表示直接复制,默认为值为 16*1024。示例如下:

shutil.copyfile(src, dst, *, follow_symlinks=True)

复制文件 src 的内容到 dst 并返回 dst,如果 dst 不存在则自动创建,src 和 dst 是字符串类型的路径名,如果 src 和 dst 指向同一个文件,抛出 SameFileError。示例如下:

copymode(src, dst, *, follow_symlinks=True)

复制文件 src 的权限到 dst,src 和 dst 是字符串类型的路径名,如果 follow_symlinks 为 False 且 src 和 dst 都是符号链接,将修改 dst 符号链接文件而非源文件的权限。示例如下:

copystat(src, dst, *, follow_symlinks=True)

复制 src 的权限、最后访问时间、最后修改时间以及标志到 dst,src 和 dst 是字符串类型的路径名,可以是文件或目录,在Linux平台上还会复制扩展属性。示例如下:

copy(src, dst, *, follow_symlinks=True)

复制文件 src 的内容和权限到 dst,dst 可以是文件或文件夹,如果是文件,函数的返回值就是 dst,如果是文件夹,函数的返回值就是 src 的文件名与 dst 的路径拼接,src 和 dst 都是字符串类型,如果 dst 指向一个文件夹,则创建与 src 同名的新文件。示例如下:

copy2(src, dst, *, follow_symlinks=True)

该方法会保留 src 的所有元数据(如创建时间、修改时间等),其他与 copy() 相同,当 follow_symlinks 为 False 且 src 为软链接时,dst 将作为软链接被创建并拷贝 src 的所有元数据到 dst。示例如下:

ignore_patterns(*patterns)

创建并返回一个函数,可传递到 copytree() 中作为 ignore 参数的值,忽略满足匹配模式的文件和目录。示例如下:

copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)

递归复制以 src 为根目录的整个目录树,返回目标目录 dst,dst 必须是不存在的目录,它和它不存在的父目录都将被创建,使用 copystat() 复制目录元数据,使用 copy2() 复制文件内容和元数据。

示例如下:

rmtree(path, ignore_errors=False, onerror=None)

删除目录,path 必须指定一个目录。示例如下:

move(src, dst, copy_function=copy2)

移动文件或目录到目标位置,如果目标位置 dst 是一个存在的目录,将 src 移动到 dst 路径下。示例如下:

disk_usage(path)

检测磁盘使用信息,返回值为元组。示例如下:

which(cmd, mode=os.F_OK | os.X_OK, path=None)

返回 cmd 调用的可执行文件路径,没有返回 None。mode:用于判断文件是否存在或可执行,path:cmd 的查找路径。示例如下:

chown(path, user=None, group=None)

改变指定 path 的所有者和所属组,user 和 group 参数,可以是系统上的用户名、组名或 uid/gid,至少需要传递其中一个参数。

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)

创建归档文件,并返回归档文件的名称。

看下示例:

get_archive_formats()

返回支持的归档格式列表,列表中的每个元素是 (name, description) 形式的元组。示例如下:

register_archive_format(name, function, extra_args=None, description=’’)

注册一个格式名并绑定到一个压缩时使用的程序,function 是用于解包存档文件的可调用函数。

unregister_archive_format(name)

从支持的归档格式中移除 name。

unpack_archive(filename, extract_dir=None, format=None)

解压归档文件。filename:归档文件名称;extract_dir:归档文件解压的目标位置;format:使用指定格式的解压器解压归档文件。

register_unpack_format(name, extensions, function, extra_args=None, description=’’)

注册格式为 name 的解压器。

unregister_unpack_format(name)

从支持的解压格式中移除 name。

get_unpack_formats()

返回支持的解压格式列表,列表中的每个元素是 (name, extensions, description) 形式的元组。

get_terminal_size()

查询终端大小。示例如下:

Python之shutil模块

  shutil模块是高级的文件操作模块。之前学习的os模块之提供了对文件和目录进行一些简单的操作 功能。但是像---移动、复制、打包、压缩、解压等功能os模块都没有提供。shutil模块其实是对os模块的补充。下面我们简单的介绍一下shutil模块的使用。

 

1、shutil的复制功能

shutil.copyfileobj(fsrc, fdst[,length=16*1024])

功能:复制一个文件的内容到另一个文件中,可以copy指定大小的内容

 

 def copyfileobj(fsrc, fdst, length=16*1024):
  while 1:
   buf = fsrc.read(length)
   if not buf:
    break
   fdst.write(buf)
注意:源码中的fsrc,fdst都是一个文件对象,都需要先打开然后才能进行复制操作
示例:
 import shutil
 f1 = open(file1, r)
 f2 = open(file2, w+)
 shutil.copyfileobj(f1, f2, length=16*1024)

 

 

shutil.copyfile(src, dst)

功能:复制文件内容,其实copyfile()方法调用的就是copyfileobj方法。他的内部会帮我们打开文件

示例:

import shutil
 shutil.copyfile(‘file1‘, ‘file2‘)

shutil.copymode(src, dst)

功能:复制文件权限,不更改文件内容、组和用户。其实就是将一个文件的权限复制给另一个文件

示例:

import shutil
shutil.copymode(‘file1‘, ‘file2‘)
 
注意:这个方法必须要求目标文件一定要存在,否则会报错。

 

shutil.copystat(src, std)

功能:复制文件的所有状态信息,例如:权限、用户、组、时间等
 

shutil.copy(src, dst)

功能:复制文件的内容及权限,先copyfile后在copymode

 

shutil.copy2(src, dst)

功能:复制文件的内容以及文件的所有状态信息。先copyfile然后在copystat

 

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,ignore_dangling_symlinks=False)

功能:递归的复制文件的内容以及状态信息,其实就是复制目录。

 

2、删除文件及目录

shutil.rmtree(path, ignore_errors=False, onerror=None)

功能:递归的删除文件,也可以删除目录

 

3、移动文件及目录

shutil.move(src, dst)

功能:递归的移动文件

 

4、压缩打包文件

shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)

功能:打包压缩文件

参数:
 base_name:压缩打包后的文件名或路径名
 
 format:压缩或者打包格式。例如:‘zip‘,‘tar‘, ‘bztar‘, ‘gztar‘
 
 root_dir:将哪个目录或文件压缩打包(也就是源文件)

示例:

import shutil
shutil.make_archive(‘result‘, ‘gztar‘, root_dir=‘./lib‘)

以上是关于Python shutil 模块的主要内容,如果未能解决你的问题,请参考以下文章

Python shutil模块

python之shutil模块

python shutil 模块

python之shutil模块

python基础-shutil模块

python基础-shutil模块