shutil模块
shutil模块
提供了大量的文件的高级操作,特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作
常用方法
- shutil.copyfile(src, dst) 复制文件内容(不包含元数据)从src到dst。 DST必须是完整的目标文件名。如果src和dst是同一文件,就会引发错误shutil.Error。dst必须是可写的,否则将引发异常IOError。如果dst已经存在,它会被替换。特殊文件,例如字符或块设备和管道不能使用此功能,因为copyfile会打开并阅读文件。 src和dst的是字符串形式的路径名
- shutil.copyfileobj(fsrc, fdst[, length]) 复制文件内容,从类文件对象src到类文件对dst。可选参数length指定缓冲区的大小,负数表示一次性读入。默认会把数据切分成小块拷贝,以免占用太多内存。注意:拷贝是从fsrc的当前文件开始
- shutil.copymode(src,dst) 拷贝权限,不包括属主和属组
- shutil.copy(src,dst) 拷贝文件,包括权限
- shutil.copy2(src,dst) 拷贝文件,包括权限和状态信息 类似于Unix命令cp -p
- shutil.copystat(src, dst) 拷贝文件状态
- shutil.chown(name,user,group) 改变用户属主属组
举例:
import shutil
shutil.copyfile('test.xml','testxml.xml') #拷贝文件
shutil.copyfile('test.xml','testxml2.xml') #拷贝文件
shutil.copyfileobj(open('test.xml','r'),open('test1.xml','w')) #拷贝文件内容
shutil.copymode('test.xml','testxml.xml') #将test.xml文件的权限拷贝给testxml.xml
shutil.copy('test.xml','test3.xml') #拷贝文件和权限
shutil.copy2('test.xml','test4.xml') #拷贝文件和状态
结果:
-rwxrwxrwx root staff : test.xml #源文件
-rwxrwxrwx fuzengjie staff : testxml.xml* #copyfile 的结果,又经过了copymode处理,权限改变,状态改变
-rw-r--r-- fuzengjie staff : testxml2.xml #copyfile 的结果,元数据没有拷贝
-rw-r--r-- fuzengjie staff : test1.xml #copyfileobj 的结果,元数据没有拷贝****
-rwxrwxrwx fuzengjie staff : test3.xml* #copy的结果,权限没变,状态改变
-rwxrwxrwx fuzengjie staff : test4.xml* #copy2的结果,权限和状态都没变
- shutil.ignore_patterns(*patterns) 忽略某些文件
- shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件,dst必须是不存在的一个目录
>>> shutil.copytree('day07','test', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #拷贝day07目录为test
'test'
- shutil.rmtree 删除目录
shutil.rmtree("test")
- shutil.move(src,dst) 移动目录
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
dry_run=0, owner=None, group=None, logger=None)- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www =>保存至当前路径
如:/Users/beyond/www =>保存至/Users/beyond/ - format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
- root_dir: 要压缩的文件夹路径(默认当前目录)
- owner: 用户,默认当前用户
- group: 组,默认当前组
- logger: 用于记录日志,通常是logging.Logger对象
- base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
>>> shutil.make_archive("test",'tar',root_dir='day07')
'/Users/fuzengjie/Git/gitlab/study/code/test.tar'
>>> shutil.make_archive("test",'zip',root_dir='day07')
'/Users/fuzengjie/Git/gitlab/study/code/test.zip'
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的。下面介绍两个模块的使用
- zipfile()
import zipfile
z = zipfile.ZipFile("test.zip",'w') #创建压缩文件
z.write('newtest.xml') #将需要压缩的文件写入压缩文件
z.write('test.xml')
z.close() z = zipfile.ZipFile("test.zip",'r') #读压缩文件
file_list = z.namelist() #获取压缩文件中的文件列表
z.extract('test1.xml') #解压单个文件
#z.extractall() #解压所有文件
- tarfile()
import tarfile
t = tarfile.open("test.tar","w")
t.add("test.xml",arcname="aaaaaa") #添加文件到压缩文件中,并取名aaaaa
t.add("test.xml",arcname="bbb") #添加文件到压缩文件中,并取名bbb t.close() t = tarfile.open("test.tar",'r')
s = t.getnames() #获取压缩文件中的文件列表
t.extract('bbb') #解压bbb文件
#t.extractall() #解压所有文件
print(s)
shutil模块的更多相关文章
- python的shutil模块
shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作 1.复制文件 def copy(src, dst): """Co ...
- 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 ...
随机推荐
- Openwrt iptables分析
这里将载有Openwrt的WR841N的路由表dump出来分析一下. 这个是dump出iptables的命令 root@OpenWrt:/etc/config# iptables-save 这里分为4 ...
- QDir的mkdir和mkpath区别
mkdir:上层目录不存在时,创建会失败.比如创建“c:\\test\test”,如果test不存在,那test也创建不了.目录已经存在时会返回false. mkpath:上层目录不存在也没关系,自动 ...
- 基于DDD的.NET开发框架 - ABP仓储实现
返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
- .net程序员转行做手游开发经历(二)
上篇主要介绍自己个人的经历,这篇主要讲下学习新语言的过程. 上次说到最终选择的语言是swift,框架用spritekit,上次有网友对为什么选择用这俩呢,为什么不用cocos和unity呢,cocos ...
- SQLite常用点滴总结(转)
expressionexpr ::= expr binary-op expr |expr [NOT] like-op expr [ESCAPE expr] |unary-op expr |( ...
- js下拉框
Js下拉框 http://sc.chinaz.com/tag_jiaoben/XiaLaKuang.html
- 71 fdisk-Linux 的磁盘分区表操作工具。
语法: fdisk [-l] 装置名称 选项与参数: -l :输出后面接的装置所有的分区内容.若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来. 实例 列出所有分区 ...
- iOS不得姐项目--图片帖子模块,大图默认显示最顶部分的处理
一.刚开始的处理,设置Mode属性(self.pictureImageView.contentMode = UIViewContentModeScaleAspectFill;) 和 Clip Subv ...
- Edge Model
三种edge Step (阶梯) Ramp (坡) Roof 因为噪声的存在, ramp edge是最常见的. 一阶和二阶算子在ramp edge处的表现 一阶和二阶算子对噪声的敏感性 从上自下, 高 ...
- lightoj 1074 spfa判断负环
Extended Traffic Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Sub ...