一、简介

  shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还提供了对文件以及目录的路径操作。shutil模块提供了移动、复制、 压缩、解压等操作,恰好与os互补,共同一起使用,基本能完成所有文件的操作。是一个非常重要的模块。

二、copy()

  1、描述:复制文件

  2、语法:shutil.copy(fsrc,path),返回值:返回复制之后的路径

    • fsrc:源文件
    • path:目标地址

  3、代码示例:

import shutil

# 1、 copy() 复制文件
result1 = shutil.copy('/Users/houlei/Desktop/code/python/python_demo/shutil_demo/a.txt',
'/Users/houlei/Desktop/code/python/python_demo/shutil_demo/b.txt')
print('result1 = {}'.format(result1))

  4、输出结果

houlei@houleideMacBook-Pro shutil_demo % python3 shutil_demo.py
result1 = /Users/houlei/Desktop/code/python/python_demo/shutil_demo/b.txt

  5、解释:这是在 /Users/houlei/Desktop/code/python/python_demo/shutil_demo 目录下就多了一个b.txt

三、copy2() 复制文件和状态信息

  1、描述:复制文件和状态信息,作用和用法都同 copy() 类似

  2、语法:shutil.copy(fsrc,path),返回值:返回复制之后的路径

    • fsrc:源文件
    • path:目标地址

四、copyfileobj()

  1、描述:以文件对象的形式,将一个文件的内容拷贝到另一个文件中,如果目标文件本身就有内容,来源文件的内容会把目标文件的内容覆盖掉。如果文件不存在它会自动创建一个。

  2、语法:shutil.copyfileobj(fsrc, fdst[, length=16*1024])

    • fsrc:源文件
    • fdst:复制至fdst文件
    • length:缓冲区大小,即fsrc每次读取的长度

  3、代码演示

f1 = open('a.txt', 'r')  # 读取一个文件
f2 = open('c.txt', 'w') # 写入一个文件
shutil.copyfileobj(f1, f2, length=10*1024)

  4、说明:这时就将a.txt 里面的内容复制到了c.txt中

五、copyfile()

  1、描述:将一个文件的内容拷贝到另一个文件中,目标文件无需存在

  2、语法:shutil.copyfile(src, dst,follow_symlinks)

    • src:源文件路径
    • dst:复制至dst文件,若dst文件不存在,将会生成一个dst文件;若存在将会被覆盖
    • follow_symlinks:设置为True时,若src为软连接,则当成文件复制;如果设置为False,复制软连接。默认为True

  3、代码示例

shutil.copyfile('/Users/houlei/Desktop/code/python/python_demo/shutil_demo/b.txt',
'/Users/houlei/Desktop/code/python/python_demo/shutil_demo/d.txt')

  4、解释:这时在  /Users/houlei/Desktop/code/python/python_demo/shutil_demo 目录下就会有一个d.txt

六、copytree()

  1、描述:复制整个目录文件,不需要的文件类型可以不复制

  2、语法:shutil.copytree(oripath, despath, ignore= shutil.ignore_patterns("*.xls", "*.doc"))

    • oripath : "来源路径"
    • despath : "目标路径"
    • ignore : shutil.ignore_patterns() 是对内容进行忽略筛选,将对应的内容进行忽略。

  3、工程示例

    

    该项目中创建一个test1,文件夹里面创建,e.doc, f.xls, g.txt 等不同后缀的文件用做测试

  4、代码演示

shutil.copytree('/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test1',
'/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test2',
ignore=shutil.ignore_patterns("*.doc")) # 过滤掉后缀为.doc的文件

七、move()

  1、描述:移动文件或文件夹

  2、语法:shutil.move(src, dst)

  3、代码演示

shutil.move('/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test1/e.doc',
"/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test2")

八、disk_usage()

  1、描述:查看磁盘使用信息,计算磁盘总存储,已用存储,剩余存储信息。

  2、语法:shutil.disk_usage('盘符')

  3、返回值:元组

  4、代码演示

result = shutil.disk_usage("/Users/houlei")
print('result = {}'.format(result))

  5、输出结果

result = usage(total=250790436864, used=155602710528, free=77850771456)

九、 make_archive()

  1、描述:压缩打包

  2、语法: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"or "gztar"
    • root_dir : 将哪个目录或者文件打包(也就是源文件)

  3、代码演示

# 将test2 打包后放在test1中,压缩后的名字叫test2_package, 格式是tar
shutil.make_archive(base_name='/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test1/test2_package',
format="tar",
root_dir='/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test2')

十、 get_archive_formats()

  1、描述:获取支持的压缩文件格式。目前支持的有:tar、zip、gztar、bztar。在Python3还多支持一种格式xztar

  2、代码演示

result = shutil.get_archive_formats()
print('result = {}'.format(result))

  3、输出结果

result = [('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]

十一、unpack_archive()

  1、描述:解压文件。

  2、语法:unpack_archive(filename, extract_dir=None, format=None)

    • filename:文件路径
    • extract_dir:解压至的文件夹路径。文件夹可以不存在,会自动生成
    • format:解压格式,默认为None,会根据扩展名自动选择解压格式

  3、代码示例

shutil.unpack_archive(filename='/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test1/test2_package.tar',
extract_dir='/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test1/test2',
format=None)

十二、rmtree()

  1、描述:递归的去删除文件

  2、语法:shutil.rmtree(path[, ignore_errors[, onerror]])

  3、代码示例

shutil.rmtree('/Users/houlei/Desktop/code/python/python_demo/shutil_demo/test1/test2')

python包合集-shutil的更多相关文章

  1. python包合集-argparse

    一.argparse简介 argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 import argparse 二.简单案例 简单使用,创建一 ...

  2. python包合集-cffi

    一.cffi cffi是连接Python与c的桥梁,可实现在Python中调用c文件.cffi为c语言的外部接口,在Python中使用该接口可以实现在Python中使用外部c文件的数据结构及函数. 二 ...

  3. python知识合集

    python安装包管理  http://www.cnblogs.com/wilber2013/p/4769467.html python pip安装源管理:pypi官网的源不太好,网速慢,容易造成包下 ...

  4. Python——模块合集

    标准库模块 ● Python——OS(系统操作模块) ● Python——MD5(加密模块) ● Python——time(时间模块) ● Python——re(正则表达式) ● Python——sy ...

  5. python资源合集

    Python 官网: https://www.python.org/ Python2.7 doc: https://docs.python.org/2/ Python Package User Gui ...

  6. python 时间合集 一

    **以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨**#### python中4种时间表示形式:1.格式化时间字符串 2.时间戳 3.时间元祖 4.时间对象- string_time ...

  7. python 练习合集一

    一.运算符与流程控制 1.输入两个整数,打印较大的那个值2.输入三个整数,按照从小到大的顺序打印3.输入一个三位数,打印其个位.十位.百位上的数4.输入一个年份,判断是否为闰年,是打印一句话,不是打印 ...

  8. Python爬虫合集:花6k学习爬虫,终于知道爬虫能干嘛了

    爬虫Ⅰ:爬虫的基础知识 爬虫的基础知识使用实例.应用技巧.基本知识点总结和需要注意事项 爬虫初始: 爬虫: + Request + Scrapy 数据分析+机器学习 + numpy,pandas,ma ...

  9. 如何自学 Python(干货合集)

    http://wenku.baidu.com/view/5108f974192e45361066f583.html

随机推荐

  1. Python Flask项目步骤

    构建flask项目步骤 步骤一:构建基础项目框架 创建manage.py文件 from flask import Flask app = Flask(__name__) ""&qu ...

  2. 1个程序员单干之:怎样给我的升讯威在线客服系统编写堪比 MSDN 的用户手册

    本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程. 免费在线使用 & 免费私有化部署:https://kf.shengxunwei.com 视频实 ...

  3. JavaScript String -> Number

    五种将String类型转化为Number类型的方法:   方法一:使用一元运算符:eg:字符串'5' +'5' -> 5;  5+null -> 5(null转化为0);  '5'+nul ...

  4. 『忘了再学』Shell基础 — 30、sed命令的使用

    目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...

  5. 二、shell 脚本条件测试

    目录 一.条件测试 test 格式 文件测试 文件测试常见选项 整数值比较 字符串比较 浮点数的运算 逻辑测试 二.if语句 1单分支 2双分支结构 3多分支结构 三元运算符 三.case 一.条件测 ...

  6. React中setState方法说明

    setState跟新数据是同步还是异步? setState跟新数据是异步的. 如何用代码表现出来是异步的. 点击按钮更新数据,然后去打印这个值看一下 setState跟新数据是异步的 class Fa ...

  7. 使用Kind快速构建k8s

    什么是 KindKind(Kubernetes in Docker) 是一个 Kubernetes 孵化项目,Kind 是一套开箱即用的 Kubernetes 环境搭建方案.顾名思义,就是将 Kube ...

  8. NC53681 「土」巨石滚滚

    NC53681 「土」巨石滚滚 题目 题目描述 帕秋莉掌握了一种土属性魔法 她使用这种魔法建造了一个大型的土球,并让其一路向下去冲撞障碍 土球有一个稳定性 \(x\) ,如果 \(x < 0\) ...

  9. 综合案例_文件搜索和FileFilter过滤器的原理和使用

    文件搜索 需求 : 遍历D:\aaa文件夹,及 aaa 文件夹的子文件夹并且只要.java结尾的文件 分析: 1.目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录 2.遍历目录时,获取的子文件 ...

  10. Note -「因数的欧拉函数求和」

    归档. 试证明:\(\sum \limits _{d | x} \varphi (d) = x\) Lemma 1. 试证明:\(\sum \limits _{d | p^k} \varphi (d) ...