Python shutil 模块

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

文件和文件夹操作

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

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

s = open(‘folder1/fsrc.txt’,’r’)d = open(‘folder1/fdst.txt’,’w’)shutil.copyfileobj(s,d,16*1024)

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

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

shutil.copyfile(‘folder1/fsrc.txt’,’folder1/fdst.txt’)

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

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

shutil.copymode(‘folder1/fsrc.txt’,’folder1/fdst.txt’)

注:符号链接(软链接)是一类特殊的文件, 其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。

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

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

shutil.copystat(‘folder1/fsrc.txt’,’folder1/fdst.txt’)

扩展文件属性是文件系统的一个功能,它允许用户将计算机文件与未被文件系统所解释的元数据关联起来。

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

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

# dst 为文件shutil.copy(‘folder1/fsrc.txt’,’folder1/fdst.txt’)# dst 为文件夹shutil.copy(‘folder1/fsrc.txt’, ‘tmp/’)

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

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

shutil.copy2(‘folder1/fsrc.txt’,’folder1/fdst.txt’)

ignore_patterns(*patterns)

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

shutil.ignore_patterns(‘tmp*’)

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

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

  • symlinks:是否复制软链接;
  • ignore:指定不参与复制的文件,其值应该是一个 ignore_patterns() 方法;
  • copy_function:指定复制的模式。

示例如下:

shutil.copytree(‘folder1’, ‘folder2’, ignore=shutil.ignore_patterns( ‘tmp*’))

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

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

shutil.rmtree(‘rm’)

move(src, dst, copy_function=copy2)

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

shutil.move(‘folder1/’, ‘folder2/’)

disk_usage(path)

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

print(shutil.disk_usage(‘folder1/’))# 输出结果# usage(total=107375226880, used=69274427392, free=38100799488)

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

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

print(shutil.which(‘python’))# 输出结果# E:Python3python.EXE

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)

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

  • base_name:要创建的归档文件的名称,可以包含路径表示归档文件的目标位置;
  • format:归档文件的格式(zip、tar、 gztar、bztar、xztar);
  • root_dir:归档文件的根目录(默认当前目录);
  • base_dir:归档文件中所有文件和目录的前缀路径(默认当前目录);
  • dry_run:如果为 True,不创建归档文件。
  • owner/group:归档文件中所有文件和目录的所属用户和组,如果 format 为 zip,owner 和 group 的配置不生效;
  • logger:通常使用 logging.Logger 对象;
  • verbose:已弃用。

看下示例:

# zipfile:生成文件名;归档 tmp 目录下文件和文件夹shutil.make_archive(‘zipfile’, ‘zip’, ‘tmp’)

get_archive_formats()

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

print(shutil.get_archive_formats())# 输出结果# [(‘bztar’, “bzip2’ed tar-file”), (‘gztar’, “gzip’ed tar-file”), (‘tar’, ‘uncompressed tar file’), (‘xztar’, “xz’ed tar-file”), (‘zip’, ‘ZIP file’)]

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()

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

print(shutil.get_terminal_size())# 输出结果# os.terminal_size(columns=80, lines=24)

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年7月5日
下一篇 2022年7月5日

相关推荐

  • 人脸锁行业格局已定?变则兴的大势下暗流涌动

    近年来,人脸识别等生物识别技术一路高歌猛进,在智能门锁行业发光发热。虽然行业对人脸识别安全性时有争议,但3D人脸识别方案逆流而上,恰恰用不断落地的高品质产品、大放异彩的市场反馈回应…

    2022年8月12日
  • 第一性原理计算常见软件介绍

    第一性原理计算方法即从头算。它的基本思想是将多个原子构成的体系看成是由多个电子和原子核组成的系统,并根据量子力学的基本原理对问题进行最大限度的“非经验性”处理。它只需要几个基本常数…

    2022年6月16日
  • 分享seo优化的5种策略(seo优化的策略有哪些)

    现在SEO优化成为了每一个企业进行网络营销策划的重要命题,如何做好SEO优化更是企业经常在思考的问题,SEO优化做得好,不仅可以减少企业推广的费用,更是有效的提高了推广的效果,一个…

    2022年10月18日
  • 嫦娥五号数据解密:大批月面照片公开,清晰度远超阿波罗登月工程

    随着嫦娥五号探测数据的解密,一大批月面影像产品得以公开,包括航天迷在内的国人们也因此大饱眼福。 不同于以往,嫦娥五号肩负的是月面采样返回专项使命任务,因此没有配置可在月面移动探测的…

    2022年6月23日
  • 国家市场监管总局发布一批国家标准 涉及绿色宜居、数字社会等

    来源:人民网 原创稿 人民网北京10月15日电 (记者孙博洋)记者从国家市场监管总局了解到,在10月14日世界标准日到来之际,市场监管总局(标准委)围绕“美好世界的共同愿景”和“数…

    2022年10月15日
  • 聊聊MySQL的10大经典错误

    今天就给大家列举 MySQL 数据库中,最经典的十大错误案例,并附有处理问题的解决思路和方法,希望能给刚入行,或数据库爱好者一些帮助,今后再遇到任何报错,我们都可以很淡定地去处理。…

    2022年6月25日
  • 1个电脑怎么开2个微信(电脑双开微信)

    现在很多人都拥有多个微信账号,用来区分工作和生活。在手机上会有app分身的功能,支持多个微信的登录,但是在电脑上怎么登录两个以上的微信呢?在不借助第三方软件的情况下,给大家分享一个…

    2022年11月4日
  • 微信视频号首战“6·18”:一场商业化的阳谋

    本报记者 李静 北京报道 受新冠肺炎疫情影响,2022年的“6·18”战局似乎没有往年那么激烈。然而微信视频号选择在今年杀入“6·18”战局却吸引了不少目光。 5月31日20点,“…

    2022年6月28日
  • 未来房子该卖给谁?未来5年,这“3个问题”更值得注意

    楼市转变实在太快了,去年这个时候是贷款难,新闻报道多个城市出现按揭额度紧张的情况,甚至部分贷款要等到第二年才能下来,等待放款平均需要四至六个月。但如今放款问题已经解决了,却轮到了还…

    2022年8月12日
  • 618战报初探!拼多多家电战绩新高,新品类景气度旺盛,消费向上复苏明确,机构推荐三条逻辑线

    财联社(上海,编辑 梓隆)讯,随着一年一度的618大促到来,电商平台线上近期消费火爆。今日,拼多多日发布了今年618家电行业的战报。数据显示,自5月23日启动以来,家电品牌在今年拼…

    2022年6月21日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息