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. jboss eap 6.3 域(Domain)模式配置

    jboss提供了二种运行模式:standalone(独立运行模式).domain(域模式),日常开发中,使用standalone模式足已:但生产部署时,一个app,往往是部署在jboss集群环境中的, ...

  2. tkinter 的两个例子

    第一个例子:after 用于定时操作 import tkinter as tk import time class MyApp(tk.Frame): def __init__(self, msecs= ...

  3. JavaScript中正则表达式test()、exec()、match() 方法区别

    1.test test 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1.&qu ...

  4. Burndown chart

    S型的燃尽图 在一次milestone开发过程中,开发者会持续编辑issue列表,每个issue都有自己的生命周期.燃尽图预期这些issues会被线性的消灭掉,所以从第一天直接到最后一天画个直线表示预 ...

  5. oracle 11g的企业管理器

    oracle 11g的企业管理器不同于其他版本,它是B/S的,默认登录为:https://localhost:1158/em,但我试了IE8跟360浏览器都不行,谷歌浏览器是可以访问的

  6. unity3d CarWaypoints插件

    编写初衷: 1.网上没有现成的好用的waypoints插件 2.自己在做一个赛车游戏,如果没有这款插件的话在制作游戏的过程中会被累成狗 3.从来没有接触过插件方面的东西,所以想自己尝试一下 插件用途: ...

  7. BI的相关问题[转]

    什么是BI? Business Intelligence(BI) = Data Warehouse(DW) + OLAP + Data Mining(DM) 商业智能=数据仓库+联机分析+数据挖掘 做 ...

  8. Loom工具类:Unity3D巧妙处理多线程

    Loom代码不多,只有168行, 然而却具备了子线程运行Action, 子线程与主线程交互的能力! public static Thread RunAsync(Action a) public sta ...

  9. redis入门配置

    简介: Redis是Nosql中比较出名的,分布式数据库缓存,提升相应的速度,降低对数据库的访问! Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,(永久 ...

  10. 理解MySQL数据库覆盖索引

    话说有这么一个表: CREATE TABLE `user_group` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NULL, ...