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)删除。
用户投稿
上一篇 2022年7月5日 17:58
下一篇 2022年7月5日 17:58

相关推荐

  • 什么是推广cpa一篇文章带你看懂CPA推广渠道

    CPA渠道 CPA指的是按照指定的行为结算,可以是搜索,可以是注册,可以是激活,可以是搜索下载激活,可以是绑卡,实名认证,可以是付费,可以是浏览等等。甲乙双方可以根据自己的情况来定…

    2022年11月25日
  • 博客营销的3大优势解析(博客营销怎么做)

    不知不觉已经写了24篇文章,加上这篇是第25篇了,都是自己这几年来用过的营销方法,如果遇到有些不懂的,我会咨询我的朋友和同事帮忙,尽量让每一篇有价值,哪怕是对大家有一点点帮助也行,…

    2022年11月25日
  • 什么是内容营销策略如何策划一套成功的内容营销策略

    很多时候,营销人员会在创作营销内容时感到沮丧,这也是很多企业至今没用好数字化营销工具的重要原因之一。 举个例子,您可能会花上数小时期待制作一些令人惊叹的东西,实际却是得到很少的受众…

    2022年11月25日
  • 抖音直播带货有哪些方法技巧(抖音直播带货有哪些痛点)

    如今抖音这个短视频的变现能力越来越突显了,尤其是在平台上开通直播,更具有超强的带货属性,已经有越来越多的普通人加入到其中了。不过直播带货虽然很火,但是也不是每个人都能做好的,那么在…

    2022年11月24日
  • 淘宝直播开通后带货链接怎么做(淘宝直播需要开通淘宝店铺吗)

    直播带货无论是对于商家来说还是主播收益都是非常可观的,所以不少平台都有直播带货功能,一些小伙伴也想加入淘宝直播,那么淘宝直播开通后带货链接怎么做?下面小编为大家带来淘宝直播开通后带…

    2022年11月24日
  • 科比19岁女儿遭自称与她生“科比式孩子”男子跟踪骚扰

    极目新闻记者王亮亮黄佳琪 据福克斯新闻网报道,当地时间11月21日,已故篮球巨星科比·布莱恩特的长女娜塔莉亚·布莱恩特21日向法院提交临时限制令,声称这位32岁的前科从十几岁起就骚…

    2022年11月24日
  • 免费清理c盘的软件(清理c盘空间不影响系统)

    电脑用久了慢如龟速,还卡顿,这最大的原因啊就是C盘空间不足造成的。 即使电脑配置再好,或者硬盘再快,如果长时间没有打扫C盘,打开文件或者稳定之类的,都卡得让人头大。 这时候呢不要去…

    2022年11月24日
  • 明查|美国新冠后遗症患者中有16%症状严重以致无法工作?

    点击进入澎湃新闻全球事实核查平台 速览 – 网传数据比例无权威信源佐证,该比例有可能是结合了美国疾病防控中心和布鲁金斯学会的数据得出,但这两个机构的调研目的和样本都不同…

    2022年11月24日
  • pdf虚拟打印机(添加pdf虚拟打印机)

    本文主要讲的是pdf虚拟打印机,以及和添加pdf虚拟打印机相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 pdf虚拟打印机具体是什么功能? 电脑虚拟打印机的功能有…

    2022年11月24日
  • 大疆发布DJI O3 Air Unit图传解决方案 售价1499元

    大疆日前发布了最新的DJI O3 Air Unit 数字图传解决方案,该方案将DJI O3+ 图传与1/1.7 英寸影像传感器相机模块集于一身,具有高画质、低延时、远距离等特点。 …

    2022年11月23日

联系我们

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