python的shutil模块-文件的移动、复制、打包、压缩、解压等
参考https://www.cnblogs.com/xiangsikai/p/7787101.html
os模块提供了对目录或者文件的新建、删除、查看文件属性,还提供了对文件以及目录的路径操作,比如说绝对路径、父目录…… 但是文件的操作还应该包含移动、复制、打包、压缩、解压等操作,这些功能os模块没有提供。
而shutil模块则是对文件操作的补充,即移动、复制、打包、压缩、解压等操作。
文件操作
1.只拷贝文件内容:shutil.copyfileobj(fsrc, fdst[, length]),相当于用原文件的内容覆盖目标文件的内容
- import shutil
- f1=open('a.ini','r')
- f2=open('b.ini','w')
- shutil.copyfileobj(f1,f2)
原文件要以读的模式打开,目标文件要以写的模式打开
2.拷贝文件:shutil.copyfile(src, dst),相当于创建一个空的目标文件,再把原文件内容覆盖到目标文件
- import shutil
- shutil.copyfile('a.ini','b.ini')
copyfile不需要打开文件
3.拷贝权限:shutil.copymode(src, dst)
- import shutil
- shutil.copymode('a.ini','b.ini')
要求目标文件存在
4.拷贝状态信息:shutil.copystat(src, dst),包括创建、访问和修改时间等
- import shutil
- shutil.copystat('a.ini','b.ini')
5.拷贝文件和权限:shutil.copy(src, dst),即先copyfile再copymode
- import shutil
- shutil.copy('a.ini','b.ini')
6.拷贝文件和状态:shutil.copy2(src, dst),即先copyfile再copystat
- import shutil
- shutil.copy2('a.ini','b.ini')
7.移动文件:shutil.move(源文件,指定路径),相当于复制到一个指定路径下并重命名
- import shutil
- shutil.move('a.ini','/test/b.ini')
目录操作
1.shutil.copytree(源目录,目标目录),递归复制目录及目录下的文件,状态信息也一并复制了
- import shutil
- shutil.copytree('test/','test_copy/')
- shutil.copytree('test/','test_copy/',shutil.ignore_patterns('*.txt','tmp*'))
copytree加参数shutil.ignore_patterns ('模式')表示忽略符合该条件的文件,即选择性复制
2.shutil.rmtree(目标目录):递归删除目录及目录下的文件
- import shutil
- shutil.rmtree('test/')
打包与压缩
1.make_archive(base_name, format, root_dir=' ', base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None) 打包、压缩
整个语句的返回值为压缩或打包后的文件的路径+文件名称(文件名称带有相应格式的后缀)
base_name:压缩、打包后的文件名称,无路径则表示当前路径,如果要保存至指定路径则需要指定路径,此处的文件名称不需加格式后缀,打包或压缩完成后会自动加上
format:压缩或打包的格式,有tar、zip、bztar、gztar等
root_dir:打包时切换到的根路径。也就是说开始打包前,会先执行路径切换,切换到root_dir所指定的路径,默认值为当前路径
base_dir:开始打包的路径。也就是说对base_dir所指定的路径进行打包,默认值为 root_dir
owner和group:创建tar包时使用,默认为用户当前的用户和组
logger: 用于记录日志,通常是logging.Logger对象,可省略
- #当前/root目录下,要将/root/tmp/test/目录打包并以gztar格式进行压缩,压缩后名称为test_bak,放置在test相同目录下
- import shutil
- re=shutil.make_archive('/root/tmp/test_bak','gztar','/root/tmp/test/')
- print(re)
- #执行结果
- /root/tmp/test_bak.tar.gz
- #上述语句执行前
- ls /root/tmp/test/test|grep test*
- test
- #上述语句执行后
- ls /root/tmp/test/test|grep test*
- test test.tar.gz
2.shutil.unpack_archive(file_name,unpack_path) 解压缩
file_name:需要解包的文件,需要写上文件后缀名
unpack_path :解包后文件存放的位置
参考 https://www.jb51.net/article/135049.htm 感谢
python的shutil模块-文件的移动、复制、打包、压缩、解压等的更多相关文章
- Linux_文件打包,压缩,解压
一.压缩命令 文件格式:*.gz 命令:gzip 文件名 (ps:不能压缩目录,切压缩后不保留原文件) 压缩前 -rw-r--r--. 1 root root 315 Sep 6 21:03 df.t ...
- python之shutil模块详解
shutil模块 -- --High-level file operations 高级的文件操作模块. os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如 ...
- C# 压缩 解压 复制文件夹,文件的操作
命名空间:namespace System.IO.Compression 压缩: //目标文件夹 string fileDirPath = "/Downloads/试题" + us ...
- 模块 shutil_zipfile_tarfile压缩解压
shutil_zipfile_tarfile压缩解压 shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) #将 ...
- .NET使用ICSharpCode.SharpZipLib压缩/解压文件
SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...
- 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...
- linux驱动系列之文件压缩解压小节(转)
转至网页:http://www.jb51.net/LINUXjishu/43356.html Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通 ...
- huffman压缩解压文件【代码】
距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug.其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自 ...
- 【.Net Core】ZipFile类--文件的压缩解压
NuGet引用官网自带的System.IO.Compression.ZipFile; var filename = "测试压缩解压文件"; var path = Directory ...
随机推荐
- git cherry-pick 报错is a merge but no -m option was given
gerrit上提示代码冲突的时候,我们首先会想到rebase下,不行的话就只能解决冲突了,最简单的做法是我的另一篇博客https://www.cnblogs.com/zndxall/p/9140813 ...
- 【产品案例】我是如何从零搭建起一款健身O2O产品的?
作者: Wander_Yang 我在年初参与到“SHAPE”这款健身产品的研发中,也算是第一次以产品经理的身份,从0开始负责一个产品的建立. 产品是一款O2O的智能健身连锁店,目前产品已经上线8个月, ...
- 用Partimage创建或恢复分区备份
1 Preliminary Note Partimage is part of the system rescue CD found on http://www.sysresccd.org which ...
- Go linux 实践4
这是目前学习的最难的Go demo例子 ***************************************** 如果能看懂,你就出师了,我的任务也就结束了 **************** ...
- Sql Server 生成连续时间段
方法一: declare @StartTime datetime declare @EndTime datetime set @StartTime ='2019-02-1 00:00' set @En ...
- asp.net拦截器
一 拦截器又称过滤器. asp.net mvc本身是自带3种拦截器:Action拦截器.Result拦截器.Exception拦截器. 应用中常见的拦截器有日志拦截器(Action拦截器)和异常处理拦 ...
- 收集:C# WinForm获取当前路径汇总
Winform获取应用程序的当前路径的方法集合,具体如下,值得收藏 //获取当前进程的完整路径,包含文件名(进程名). string str = this.GetType().Assembly.Loc ...
- Nodejs中原生遍历文件夹
最近在听老师讲的node课程,有个关于把异步变为同步读取文件夹的知识点做一些笔记, 让迭代器逐个自执行.
- caffe运行训练脚本时报错:Unknown bottom blob 'data' (layer 'conv1',bottom index 0)
报错的两种报错原因: 1.输入数的路径错误,需要将路径进行修改排查目录是否出错 2.训练原数据格式不对 3.train.prototxt文件中并未设置test层,而在solver层则设置了test的迭 ...
- 回声状态网络(ESN)基础教程
http://jlearning.cn/2017/05/29/ESN-basic-tutorial/ 最近在看回声状态网络(Echo State Network)的内容,注意到中文搜索引擎搜不到关于有 ...