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对象
>>> 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模块的更多相关文章

  1. python的shutil模块

    shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作 1.复制文件 def copy(src, dst): """Co ...

  2. 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时间 ...

  3. Python中os和shutil模块实用方法集…

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  4. Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  5. Python shutil模块

    shutil模块下 copy(复制).rm(删除).move(移动) 常用方法举例. copyfileobj(fsrc, fdst[, length])copyfile(src, dst, *, fo ...

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

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

  7. 小白的Python之路 day5 shutil模块

    shutil模块 一.主要用途 高级的文件.文件夹.压缩包 等处理模块 二.常用方法详解 1.shutil.copyfileobj(fsrc, fdst) 功能:把一个文件的内容拷贝到另外一个文件中, ...

  8. Day5模块-shutil模块

    参考博客:http://www.cnblogs.com/wupeiqi/articles/4963027.html shutil模块是高级的文件.文件夹.压缩处理的模块.比如文件的copy.压缩等. ...

  9. (汇总)os模块以及shutil模块对文件的操作

    ''' # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux ...

随机推荐

  1. 安卓开发:效果图中标注的像素尺寸如何转换为安卓的dp尺寸?

    我们的UI基于1920x1080分辨率给的尺寸标注,但是在安卓开发中大家一般都使用dp.sp来标注界面尺寸,所以需要一个dp与sp的转换公式. 一开始参考的的这篇文章:关于Android开发中px.d ...

  2. ios蓝牙开发(五)BabyBluetooth蓝牙库介绍

    BabyBluetooth 是一个最简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和mac osx. 特色: 基于原生CoreBluetooth框架封装的轻量级的开源库,可以帮你 ...

  3. 发布新款博客皮肤SimpleMemory

    感谢 sevennight 又为大家精心设计了一款简约风格的博客皮肤 —— SimpleMemory. 大家可以通过这篇博文感受一下实际的效果:开园子啦(浅谈移动端以及h5的发展) 如果您喜欢这款皮肤 ...

  4. DSOFramer 之一:在 64 位系统注册 DSOFramer

    DSOFramer是微软提供的一款用于在线编辑.调用Word.Excel等Office程序的ActiveX组件.很多第三方的Office组件都是基于DSOFramer组件开发的.今天我们不讲如何使用D ...

  5. P和NP问题

    1. 通俗详细地讲解什么是P和NP问题 http://blog.sciencenet.cn/blog-327757-531546.html   NP----非定常多项式(英语:non-determin ...

  6. linux基础-第十六单元 yum管理RPM包

    第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删 ...

  7. MyBatis dao层 方法传参

    MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled">       INSER ...

  8. 在Winform中播放视频等【DotNet,C#】

    在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件 ...

  9. Android 用代码设置Shape,corners,Gradient

    网上查找资料 记录学习 int strokeWidth = 5; // 3dp 边框宽度 int roundRadius = 15; // 8dp 圆角半径 int strokeColor = Col ...

  10. 100114B

    bfs #include<iostream> #include<queue> #include<cstring> #include<cstdio> us ...