shutil 模块
功能:文件/文件夹的复制,压缩处理模块
shutil.copyfileobj(fsrc,fdst[,length]):将文件内容拷贝到另一个文件中,也可以是部分内容
举例:文件复制
import shutil
# 必须先准备好读写的文件
sfile = open('func1.py',encoding='utf-8')
dfile = open('func1.py.bak','w',encoding='utf-8')
# 进行内容的复制
shutil.copyfileobj(sfile,dfile)
  注意:显然以上这个方法不实用,下面的方法最实用!
shutil.copy(src,dst):直接将源文件复制到目标,包括文件权限
如:shutil.copy('/var/log/message','message')
shutil.copyfile(src,dst):直接将源文件复制到目标,不包括文件权限
shutil.copymode(src,dst):复制文件权限,用户组不变
shutil.copystat(src,dst):复制文件状态(文件的时间等属性)的信息,包括:mode bits,atime,mtime,flags
shutil.copy2(src,dst):复制文件和权限状态信息(全复制)
shutil.copytree(src,dst):复制整个目录
shutil.rmtree(src):删除目录
shutil.move(src,dst):移动文件或文件夹
shutil.make_archive(base_name,format,..):创建压缩包并返回文件路径。缺点:无法过滤。例如:zip,tar
base_name:压缩包的文件名,也可以是包路径,只是文件名时,保存到当前目录,否则保存到指定目录。
format:压缩包种类(zip,tar,bztar,gztar)
root_dir:要压缩的文件夹路径(默认当前目录)
owner:用户,默认当前用户
group:组,默认当前组
logger:用户记录日志
举例:将/var/log的文件打包放入当前目录
import shutil
ret = shutil.make_archive('wwwwww','gztar',root_dir='/var/log')
举例2:将/var/log/的文件打包放入/root/目录
ret = shutil.make_archive('root/wwww','gztar',root_dir='/var/log')
注意:以上打包为zip后,最好用zipfile模块解包。
shutil对压缩包的处理是调用ZipFile和TarFile 模块
如:使用ZipFile进行压缩和解压
import zipfile
#注意,zipfile只能压缩文件,压缩目录只有目录结构
#压缩:
z = zipfile.ZipFile('bk.zip','w')
z.write('a.log')
z.write('data.log')
z.close()
#解压
z = zipfile.ZipFile('bk.zip','r')
z.extractall()
z.close()
如:用tar进行打包(但是不压缩,压缩需要使用zipfile)
import tarfile
tar = tarfile.open('/root/your.tar','w')
#注意:这里使用了arcname,则打包后的只将log下的文件全部打包到test文件夹里,如果不带arcname参数,则打包的是路径+文件
tar.add('/var/log',arcname='test')
tar.add('/test.zip')
tar.close()

python学习之-- shutil模块的更多相关文章

  1. Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天  shutil 模块  zipfile   tarfile 模块 os文件的操作还应该包含移动 复制  打包 压缩 解压等操作,这些os模块都没有提供 shutil 模块shut ...

  2. Python学习 Part4:模块

    Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...

  3. python中的shutil模块

    目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...

  4. python学习之argparse模块

    python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...

  5. Python学习day19-常用模块之re模块

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  6. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  7. Python学习笔记-常用模块

    1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...

  8. python学习笔记五 模块下(基础篇)

    shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...

  9. python学习之random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

随机推荐

  1. oracle适配器连接不上解决方案

    Oracle适配器连接不上解决方案 作者:Vashon oracle 的Developer连接不上报错:listener does not currently know of SID given in ...

  2. 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果

    一直很纠结,Oracle的快速返回机制,虽然结果集很多,可是它能很快的显示第一个结果,虽然通过MYSQl的客户端可以做到,但是通过JDBC却不行. 今天用了1个多小时,终于搞定此问题,希望对广大Jav ...

  3. 洛谷 P1802 5倍经验日

    题目背景 现在乐斗有活动了!每打一个人可以获得5倍经验!absi2011却无奈的看着那一些比他等级高的好友,想着能否把他们干掉.干掉能拿不少经验的. 题目描述 现在absi2011拿出了x个迷你装药物 ...

  4. SoapUI对于Json数据进行属性值获取与传递

    SoapUI的Property Transfer功能可以很好地对接口请求返回的数据进行参数属性获取与传递,但对于Json数据,SoapUI会把数据格式先转换成XML格式,但实际情况却是,转换后的XML ...

  5. 关于Error:Maven Resources Compiler: Maven project configuration required for module '项目名' isn't available. Compilation of Maven projects is supported only&

    总是出现Error:Maven Resources Compiler: Maven project configuration required for module '项目名' isn't avai ...

  6. 【转】NIO的定义和原理是什么?

    NIO和IO到底有什么区别?有什么关系? 首先说一下核心区别: NIO是以块的方式处理数据,但是IO是以最基础的字节流的形式去写入和读出的.所以在效率上的话,肯定是NIO效率比IO效率会高出很多. N ...

  7. AHOI2014/JSOI2014 奇怪的计算器

    题目描述 题解: 考虑到经过一系列变化后小数不可能比大数大,我们可以用线段树维护区间修改. 重点是,每个节点都可以通过$a[i]=a[i]*t1+a0[i]*t2+t3$这个函数来表示,我们就可以把三 ...

  8. Go:json(序列化、反序列化)

    一.示例 package main import ( "encoding/json" "fmt" ) type Person struct { Name str ...

  9. consul无client模式

    1.推consul的镜像到生产应用全部服务器. 每个consul的server模式的容器,都需要单独的物理服务器. 主节点:docker run -d --net=host --name=consul ...

  10. 《Java编程思想》笔记14.类型信息

    运行时类型信息使得你可以在运行时发现和使用类型信息,主要有两种方式: "传统的"RTTI,它假定我们在编译时已经知道了所有的类型: "反射"机制,它允许我们在运 ...