shutil可以简单地理解为sh + util,shell工具的意思。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。

shutil模块的主要方法

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

copy文件内容到另一个文件,可以copy指定大小的内容。这个方法是shutil模块中其它拷贝方法的基础,其它方法在本质上都是调用这个方法。

让我们看一下它的源码:

def copyfileobj(fsrc, fdst, length=16*1024):while 1:buf = fsrc.read(length)if not buf:breakfdst.write(buf)

代码很简单,一看就懂。但是要注意,其中的fsrc,fdst都是使用open()方法打开后的文件对象。

import shutil
s =open('fsrc.txt','r')
d=open('fdst.txt','w')
shutil.copyfileobj(s,d,length=16*1024)

2) shutil.copyfile(src, dst)

拷贝整个文件。同样看下它的源码,忽略前面一些检测用的代码,该方法的核心在最后几行,我们可以很清楚地看到copyfile()方法对copyfileobj()进行了调用。

def copyfile(src, dst, *, follow_symlinks=True):if _samefile(src, dst):raise SameFileError("{!r} and {!r} are the same file".format(src, dst))for fn in [src, dst]:try:st = os.stat(fn)except OSError:      passelse:if stat.S_ISFIFO(st.st_mode):raise SpecialFileError("`%s` is a named pipe" % fn)if not follow_symlinks and os.path.islink(src):os.symlink(os.readlink(src), dst)else:with open(src, 'rb') as fsrc:with open(dst, 'wb') as fdst:copyfileobj(fsrc, fdst)return dst

3. shutil.copymode(src, dst)

仅拷贝权限。内容、组、用户均不变。

4. shutil.copystat(src, dst)

仅复制所有的状态信息,包括权限,组,用户,时间等。

5. shutil.copy(src,dst)

同时复制文件的内容以及权限,也就是先copyfile()然后copymode()。

6. shutil.copy2(src, dst)

同时复制文件的内容以及文件的所有状态信息。先copyfile()后copystat()。

7. shutil.ignore_patterns(*patterns)

忽略指定的文件。通常配合下面的copytree()方法使用。

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

递归地复制目录及其子目录的文件和状态信息

symlinks:指定是否复制软链接。小心陷入死循环。
ignore:指定不参与复制的文件,其值应该是一个ignore_patterns()方法。
copy_function:指定复制的模式

典型用法

from shutil import copytree, ignore_patternscopytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))
copytree('folder1', 'folder2', ignore=ignore_patterns('*.pyc', 'tmp*'))
copytree('f1', 'f2', symlinks=True, ignore=ignore_patterns('*.pyc', 'tmp*'))

9. shutil.rmtree(path[, ignore_errors[, onerror]])

递归地删除目录及子目录内的文件。注意!该方法不会询问yes或no,被删除的文件也不会出现在回收站里,请务必小心!

下面的例子在碰到只读文件时,尝试清除只读属性,然后再删除。

import os, stat
import shutildef remove_readonly(func, path, _):"去除文件的只读属性,尝试再次删除"os.chmod(path, stat.S_IWRITE)func(path)shutil.rmtree(directory, onerror=remove_readonly)

10. shutil.move(src, dst)

递归地移动文件,类似mv命令,其实就是重命名。

11. shutil.which(cmd)

类似linux的which命令,返回执行该命令的程序路径。Python3.3新增

12. shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])

创建归档或压缩文件。

base_name:压缩后的文件名。如果不指定绝对路径,则压缩文件保存在当前目录下。这个参数必须指定。
format:压缩格式,可以是“zip”, “tar”, “bztar” ,“gztar”,“xztar”中的一种。这个参数也必须指定。
root_dir:设置压缩包里的根目录,一般使用默认值,不特别指定。
base_dir:要进行压缩的源文件或目录。
owner:用户,默认当前用户。
group:组,默认当前组。
logger:用于记录日志,通常是logging.Logger对象。
import shutil
shutil.make_archive("d:\\3", "zip",  base_dir="d:\\1.txt")

13. shutil.unpack_archive(filename[, extract_dir[, format]])

解压缩或解包源文件。

filename是压缩文档的完整路径
extract_dir是解压缩路径,默认为当前目录。
format是压缩格式。默认使用文件后缀名代码的压缩格式。
import shutil
shutil.unpack_archive("d:\\3.zip", "f:\\3", 'zip')

shutil模块的压缩和解压功能,在后台是通过调用zipfile和tarfile两个模块来进行的。

shutil库的使用相关推荐

  1. [python]os库与shutil库与操作系统的交互-整理硬盘中Vivaldi的作品

    Vivaldi是本人最喜爱的作曲家,他结构完整,旋律优美的协奏曲真是令人着迷. 关于os库的使用 http://www.cnblogs.com/rollenholt/archive/2012/04/2 ...

  2. Python——os库和shutil库的使用介绍

    一.os库基本介绍 1.os库是Python的标准库,包含几百个函数. 2.与操作系统相关的,包括常用路径操作.进程管理.环境参数等. 二.shutil库的概述 Os库是Python标准库中一个重要的 ...

  3. Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类

    Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...

  4. Python shutil库

    转自:https://www.cnblogs.com/MnCu8261/p/5494807.html shutil -- --High-level file operations  高级的文件操作模块 ...

  5. python复制文件夹shutil.copytree

    这里用到shutil库里的copytree方法 import shutil shutil.copytree(old_path,new_path) old_path是要复制的文件夹路径. new_pat ...

  6. 【博学谷学习记录】超强总结,用心分享 | 人工智能编程语言Python常用标准库(上)

    Python常用标准库 上 sys库 time库 random库 math库 os库 shutil库 Python语言的急速发展很大程度上得益于其开放共享的特点和良好的社区支持和计算生态,拥有超过十几 ...

  7. python中shutil模块的用法-高级文件操作模块

    目录 前言 一.shutil是什么? 二.使用步骤 1. 安装shutil库 2. shutil库的使用 3. 复制函数 3.1 shutil.copy(src,dst) ==> 拷贝文件和权限 ...

  8. Python模块——shutil模块详解

    本文大纲 os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作.而Python另外一个标准库--shutil库,它作为os模块的补充,提供了复制.移动.删除.压缩.解压等 ...

  9. 基础必备 | Python处理文件系统的10种方法

    作者 | Jeff Hale 译者 | 风车云马:责编 | Jane,Rachel 出品 | Python大本营(ID:pythonnews) [导读]在编写一些Python程序的时候,我们常常需要与 ...

最新文章

  1. 【译】OpenDaylight控制器:YANG Schema和Model
  2. iOS应用性能调优的25个建议和技巧【转】
  3. Sql—表格的建立,删除,数据的建立与删除-总结篇
  4. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密
  5. 再不解决延迟不当,小心你的内存被打爆
  6. 被李小龙女儿起诉侵权后,真功夫态度强硬:不寻求和解,无更换商标计划
  7. CXF发布RestFul WebService和SOAP WebService
  8. 用html5制作机柜,基于HTML5 Canvas 点击添加 2D 3D 机柜模型
  9. 190503每日一句
  10. MX160煲机音乐的选择
  11. OpenCV图像处理专栏六 | 来自何凯明博士的暗通道去雾算法(CVPR 2009最佳论文)
  12. TestStand-调试VI
  13. 总结:伺服电机控制及结合强弱电的控制系统
  14. 淘宝天猫返利查券机器人搭建
  15. 微信公众号发送红包(源码)
  16. 【猿说VUE】Vue过滤器使用介绍(劳动节致敬)
  17. 高通SDX12平台:启动流程梳理
  18. DevOps开发运维:Buddy中文版正式发布
  19. Redis(十一) -- Redis数据结构(八) -- Geo
  20. win7 32/64位系统安装ug nx4.0

热门文章

  1. android uikit框架详解,UIKit框架(1)iOS App开发介绍
  2. opencv3--斑点检测simpleBlobDetector
  3. Python安装 报错0x80072efd
  4. 施工员培训建筑八大员培训帷幕灌浆施工技术在水工工程中的运用
  5. 弹性理论法研究桩基受力计算公式_桩基计算理论
  6. 基于稳态视觉诱发电位识别的虚拟家用电器脑机交互控制接口设计
  7. css3绘制异形图(弧形缺口,箭头缺口,底部为圆弧,重叠按钮,缺角矩形,折角矩形,div边角)
  8. TexStudio的安装与使用教程(包括参考文献的引用)Latex教程
  9. 72、任务72——扫描工具Nikto(附带Httrack)
  10. 创建一个图形界面的计算器