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. 关于mvc5+EF里面的db.Entry(model).State = EntityState.Modified报错问题

    最近在使用mvc5+EF的的时候用到了这句话 db.Entry(model).State = EntityState.Modified 看上去很简单的修改数据,但是一直报错,说是key已经存在,不能修 ...

  2. 维克里拍卖 Vickrey auction

    https://en.wikipedia.org/wiki/Vickrey_auction 维克里拍卖(Vickrey auction),即次价密封投标拍卖(Second-price sealed-b ...

  3. android之广播(二)

    广播接受者不仅可以通过清单文件来向系统注册,也可以通过代码来注册.并且有的广播必须通过代码来注册广播接受者. 锁屏和解锁广播 电量改变广播 打开屏幕和关闭屏幕 这里将广播接收者写在服务里面 <? ...

  4. 我的第一个DMZ方案实践

    方案提出的初衷:外网需要定时和不定时推送数据到内网服务器(只要求数据到达内网,没有要求直接连接到内网) 为什么不是直连到内网:每个人第一想到的是不安全,是的,没错不安全.内网的应用和外网的应用最明显的 ...

  5. IntelliJ idea的使用

    1.快捷键 2.插件集成 附录:参考资料

  6. px和em和rem的区别

    一.px特点: 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96 ...

  7. win7远程桌面连接不上,解决办法

    来源于:http://jingyan.baidu.com/article/39810a23edc48bb637fda672.html 一般情况下,对WIN7的远程连接只需要5步即可完成远程连接的设置: ...

  8. Linux chkconfig命令

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...

  9. git 冲突解决

    冲突文件的组成 "<<< HEAD"和 "====="之间的为主干内容 "=====" 和 ">>& ...

  10. flex布局知识点

    flexBox 布局最合适小规模布局,而网格布局适合较大规模布局. float,clear,vertical-align  在flex中不起作用. flex布局中,有两类作用于父节点也子节点的样式,大 ...