20180209-shutil模块
下面讲解shutil模块的相关操作:
1.shutil.copyfileobj(fsrc, fdst, length=16*1024) 将fsrc文件内容拷贝到fdst文件中,length是指一次拷贝多少个字节
源码:
def copyfileobj(fsrc, fdst, length=16*1024):
"""copy data from file-like object fsrc to file-like object fdst"""
while 1:
buf = fsrc.read(length)
if not buf:
break
fdst.write(buf)
不难发现,copyfileobj方法中length参数是指一次拷贝多少个字符(以字符形式读取文件,如果以字节的形式读取,则length值字节数),内部的实现通过一个while死循环来遍历fsrc文件的length长度字符,并写入fdst文件中,如果不写则默认length = 16 * 1024
# 1.将文件内容拷贝到另一个文件中 shutil.copyfileobj(fsrc, fdst, length=16*1024),可以指定一次拷贝多少内容,本例不写,则默认读取16 * 1024个字节
ret = shutil.copyfileobj(open('file_01.txt'),open('file_02.txt','w'))
print('将文件内容拷贝到另一个文件中:',ret)
2.shutil.copyfile(src, dst) 拷贝文件,dst目标文件无需存在
#2.拷贝文件 shutil.copyfile(src, dst) dst目标文件无需存在
ret = shutil.copyfile('file_01.txt','file_03.txt')
print('拷贝文件:',ret)
3.shutil.copymode(src,dst)仅拷贝权限,内容、组、用户均不变,dst目标文件必须存在
# 3.仅拷贝权限,内容、组、用户均不变 dst目标文件必须存在
ret = shutil.copymode('file_01.txt','file_04.txt')
print('仅拷贝权限:',ret)
4.shutil.copystat(src,dst)仅拷贝状态的信息,包括mode bits、atime、mtime、flags dst目标文件必须存在
# 4.仅拷贝文件状态 包括mode bits、atime、mtime、flags dst目标文件必须存在
ret = shutil.copystat('file_01.txt','file_05.txt')
print('仅拷贝文件状态:',ret)
5.shutil.copy(src,dst)拷贝文件和权限 dst目标文件无需存在
# 5.shutil.copy(src,dst) 拷贝文件和权限 dst目标文件无需存在
ret = shutil.copy('file_01.txt','file_06.txt')
print('拷贝文件和权限:',ret)
6.shutil.copy2(src,dst)拷贝文件和状态信息 dst目标文件无需存在
# 6.shutil.copy2(src,dst) 拷贝文件和状态 dst目标文件无需存在
ret= shutil.copy2('file_01.txt','file_07.txt')
print('拷贝文件和状态:',ret)
7.shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹,ignore参数可以设置忽略文件 dst目标文件不能存在,否则报错
shutil.ignore_patterns('__init__.py','views.py')
# 7.shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹
ret = shutil.copytree('file01','file02',ignore=shutil.ignore_patterns('__init__.py','views.py'))
print('递归拷贝文件目录:',ret)
8.shutil.rmtree(src) 递归删除文件 src源文件必须存在,否则报错
# 8.shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的删除文件
ret = shutil.rmtree('file02')
print('递归删除文件:',ret)
9.shutil.move(src,dst)递归移动文件,src源文件必须存在,否侧报错
# 9.shutil.move(src,dst) 递归移动文件,类似mv命令
ret = shutil.move('file01','file02')
print('递归移动文件:',ret)
重点学习
项目的目录结构如下:
1.压缩文件
make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)
创建压缩包并返回文件路径,例如zip、tar
base_name 压缩包的文件名,也可以是压缩包的路径,只是文件名时,则保存到当前目录,否则保存到指定路径
format 压缩包的种类 'zip'、'tar'、'bztar'、'gztar'
root_dir 要压缩的文件夹路径(默认当前目录)
logger 用于记录日志,通常是logging.Logger对象
# 压缩fil02文件夹,由于shutil_exercise.py所在目录是shutil下,如果不指定root_dir,怎会将shutil目录下的所有文件都压缩到file02.zip包中
# 将/file02下文件压缩放置到当前目录下
ret = shutil.make_archive('file02','zip',root_dir='./file02')
print('压缩文件:',ret)
shutil对压缩包的处理是调用ZipFile和TarFile两个模块进行的,详细讲解:
zipfile的压缩/解压
# 压缩
z = zipfile.ZipFile('file01.zip','w')
z.write('file_01.txt')
z.write('file_02.txt')
z.write('file02')
z.close() # 解压
# 将file01.zip压缩包的内容解压到当前目录的file01目录下
z = zipfile.ZipFile('file01.zip','r')
z.extractall(path='./file01')
z.close()
注意:zipfile不能压缩目录,只能压缩文件,也就意味着压缩后的文件中file02只是一个空目录,目录下的文件不会被压缩
tarfile的压缩/解压
import tarfile
# 压缩
t = tarfile.open('tmp/file01.tar','w')
t.add('file_01.txt',arcname='file_01.bak')
t.add('file01')
t.close() # 解压
t = tarfile.TarFile('tmp/file01.tar','r')
t.extractall('tmp/tar')
t.close()
注意:tarfile可以压缩目录
20180209-shutil模块的更多相关文章
- python的shutil模块
shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作 1.复制文件 def copy(src, dst): """Co ...
- shutil模块
shutil模块 提供了大量的文件的高级操作,特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作 常用方法 shutil.copyfile(src, dst) 复制文件内容(不包含元数据)从 ...
- s14 第5天 时间模块 随机模块 String模块 shutil模块(文件操作) 文件压缩(zipfile和tarfile)shelve模块 XML模块 ConfigParser配置文件操作模块 hashlib散列模块 Subprocess模块(调用shell) logging模块 正则表达式模块 r字符串和转译
时间模块 time datatime time.clock(2.7) time.process_time(3.3) 测量处理器运算时间,不包括sleep时间 time.altzone 返回与UTC时间 ...
- Python中os和shutil模块实用方法集…
Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...
- Python中os和shutil模块实用方法集锦
Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...
- Python shutil模块
shutil模块下 copy(复制).rm(删除).move(移动) 常用方法举例. copyfileobj(fsrc, fdst[, length])copyfile(src, dst, *, fo ...
- Python第二十天 shutil 模块 zipfile tarfile 模块
Python第二十天 shutil 模块 zipfile tarfile 模块 os文件的操作还应该包含移动 复制 打包 压缩 解压等操作,这些os模块都没有提供 shutil 模块shut ...
- 小白的Python之路 day5 shutil模块
shutil模块 一.主要用途 高级的文件.文件夹.压缩包 等处理模块 二.常用方法详解 1.shutil.copyfileobj(fsrc, fdst) 功能:把一个文件的内容拷贝到另外一个文件中, ...
- Day5模块-shutil模块
参考博客:http://www.cnblogs.com/wupeiqi/articles/4963027.html shutil模块是高级的文件.文件夹.压缩处理的模块.比如文件的copy.压缩等. ...
- (汇总)os模块以及shutil模块对文件的操作
''' # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux ...
随机推荐
- java并发学习--第四章 JDK提供的线程原子性操作工具类
在了解JDK提供的线程原子性操作工具类之前,我们应该先知道什么是原子性:在多线程并发的条件下,对于变量的操作是线程安全的,不会受到其他线程的干扰.接下来我们就学习JDK中线程的原子性操作. 一.CAS ...
- 对calc()的研究
1.calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度 calc()最大的好处就是用在流体布局上 2.calc()使用通用的数学运算规则 使用“+”.“ ...
- layer.js插件
官方网址: http://layer.layui.com/
- Tomcat修改源码,重新编译
源码和编译的区别:源码不能直接运行,是人读的,而编译后的程序是计算机可以读的.所以它们是不同的语言.
- python爬虫学习之路-遇错笔记-1
当在运行爬虫时同时开启了Fidder解析工具时(此爬虫并不是用于爬取手机端那内容,而是爬去电脑访问的网页时),访问目标站点会遇到以下错误: File "C:\Users\litao\AppD ...
- mybatis有结果返回null
解决:application.yml 中mybatis此项(解决驼峰及数据库字段有下划线问题) map-underscore-to-camel-case: true 问题: mybatis debug ...
- 测开之路七十八:shell之函数和参数
函数 function function_name(){ statement1 Statement2 .... statementn} function_name $var1 ...
- 将多个jpg文件以追加形式合并成一个文件_delphi教程 bmp 合并 http://www.west.cn/www/info/58058-1.htm
将多个jpg文件以追加形式合并成一个文件_delphi教程 作者:网友供稿 点击:0 西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!云服务器 ...
- Bootstrap 学习笔记13 附加导航插件
附加导航代码: <style> a:focus { outline: none; } .nav-pills { width: 150px; } .nav-pills.affix { top ...
- 网络流强化-HDU2732
第一次遇到加了“多余”的边会导致WA的——在我看来是很多余,见代码191行 之后会思考为什么,想出来再更. 问题弄明白了,如果你在连接边连了一条到没有柱子的点的边,这个没有柱子的点是不可能连到终点的, ...