将文件内容拷贝到另一个文件

shutil.copyfileobj('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) # 写入目标文件

  使用:

>>> import shutil
>>> shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
>>>
>>> f1 = open("sheve_test.py","r")
>>> f2 = open("sheve_test_new.py","w")
>>> shutil.copyfileobj(f1,f2)
文件拷贝

shutil.copyfile(src, dst):拷贝文件

shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在

shutil.copy(src, dsr):拷贝文件和权限

>>> import shutil
>>> shutil.copy('test.py', 'test_copy.py')
>>> exit() #:Desktop hqs$ ls -lrt
total 16
-rw-r--r-- 1 hqs staff 124 4 4 10:46 test.py
-rw-r--r-- 1 hqs staff 124 4 4 11:42 test_copy.py

shutil.copy2(src, dsr):拷贝文件和状态信息

>>> import shutil
>>> shutil.copy2('test.py', 'test_copy2.py')

shutil.copymode(src, dsr):拷贝文件权限。内容、组、用户均不变

shutil.copystat(src, dsr):拷贝状态信息。包括:mode\bits\atime\mtime\flags

递归操作

shutil.ignore_patterns(*patterns)

shutil.copytree(src, dst, symlinks=False, ignore=None)  :递归拷贝文件夹,symlinks是软链接,ignore是忽略

shutil.rmtree():递归删除

shutil.move(src, dst):递归移动文件(实质是重命名)

shutil.copytree('packages','pack2')
shutil.copytree('packages','pack3',ignore=shutil.ignore_patterns("__init__.py","view.py")) # shutil.rmtree(path[,ignore_errors[,onerror]]) # 递归地去删除文件
shutil.rmtree("pack2") # shutil.move(src,dst) # 递归地去移动文件(剪切)
shutil.move("pack3","pack4")
文件压缩

shutil.make_archive(base_name, format, ...):创建压缩包并返回文件路径

#将 /data 下的文件打包放置当前程序目录
import shutil
ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data') #将 /data下的文件打包放置 /tmp/目录
import shutil
ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')

  base_name:压缩包文件名或路径(保存到当前目录或指定目录)

  format:压缩包种类(zip\tar\bztar\gztar)

  owner:用户,默认当前用户

  group:组,默认当前组

  logger:用于记录日志,通常是logging.Logger对象

>>> import shutil
>>> shutil.make_archive('test_bak', 'gztar')
'test_bak.tar.gz'
>>> exit()
# Desktop hqs$ ls -lrt
total 32
-rw-r--r-- 1 hqs staff 124 4 4 10:46 test_copy2.py
-rw-r--r-- 1 hqs staff 124 4 4 10:46 test.py
-rw-r--r-- 1 hqs staff 124 4 4 11:42 test_copy.py
-rw-r--r-- 1 hqs staff 673 4 4 12:07 test_bak.tar.gz
压缩文件处理

zipfile压缩&解压缩

import zipfile

# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close() # 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall(path='.')
z.close()

tarfile压缩&解压缩

import tarfile

# 压缩
>>> t=tarfile.open('/tmp/egon.tar','w')
>>> t.add('/test1/a.py',arcname='a.bak')
>>> t.add('/test1/b.py',arcname='b.bak')
>>> t.close() # 解压
>>> t=tarfile.open('/tmp/egon.tar','r')
>>> t.extractall('/egon')
>>> t.close()

shutil模块——高级的文件、文件夹、压缩包处理模块的更多相关文章

  1. shutil模块(高级的文件、文件夹、压缩包处理模块)

    shutil 模块 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])将文件内容拷贝到另一个文件中 import shutil s ...

  2. shutil 模块 高级的文件、文件夹、压缩包 处理模块

    高级的文件.文件夹.压缩包 处理模块 # 将文件内容拷贝到另一个文件中 shutil.copyfileobj(fsrc, fdst[, length]) import shutil shutil.co ...

  3. shutil——高级的 文件、文件夹、压缩包 处理模块

    高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])复制文件内容(不包含元数据)从类文件对象src到类文件对dst.可选参数leng ...

  4. Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)

    OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目 ...

  5. shutil模块和几种文件上传Demo

    一.shutil模块 1.介绍 shutil模块是对os中文件操作的补充.--移动 复制 打包 压缩 解压 2.基本使用 1. shutil.copyfileobj(文件1, 文件2, 长度) 将文件 ...

  6. python文件、文件夹操作OS模块

    转自:python文件.文件夹操作OS模块   '''一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: ...

  7. Python3-shutil模块-高级文件操作

    Python3中的shutil模块提供了对文件和容器文件的一些高级操作 shutil.copy(src, dst) 拷贝文件,src和dst为路径的字符串表示,copy()会复制文件数据和文件权限,但 ...

  8. nodejs 监听文件夹变化的模块

    使用Node.JS监听文件夹变化 fs.watch 其中Node.JS的文件系统也可侦听某个目录的改变, 如fs.watch   其中fs.watch的最大缺点就是不支持子文件夹的侦听,并且在很多情况 ...

  9. Python之shutil模块(复制移动文件)

    用python实现将某代码文件复制/移动到指定路径下.场景例如:mv ./xxx/git/project1/test.sh ./xxx/tmp/tmp/1/test.sh (相对路径./xxx/tmp ...

  10. 个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数

    对于日常办公过程中,每天面对的操作离不开文件.文件夹的操作,当然可以用资源管理器.Everything之类的管理软件来管理.但涉及到批量操作时,在Excel环境或许是个更好的方式,前面很多的内容中不断 ...

随机推荐

  1. Invalid bound statement (not found): com.taotao.mapper.TbItemMapper.selectByExample: 错误

    在Maven工程下,想通过controller接收url中的参数Id查询数据库的数据,并且以json形式显示在页面. 在浏览器输入url后出现的问题: 八月 22, 2016 1:45:22 下午 o ...

  2. js原形链

    基本规则 1.每个对象都具有一个名为__proto__的属性: 2.每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名 ...

  3. Svn安装成功后的操作

    一.服务器端创建目录 在Svn服务器端创建一个用来保存客户端提交文件的文件夹 (我的路径是d:/Svn/App/book) 首先将Svn的服务端安装目录/bin 进行环境配置,以下操作是在进行环境配置 ...

  4. JAVASCRIPT 使用 && 和 || 完成 简写

    123=='1234' && 'active'    为真时,返回 'active '...可以当成 三元运算符的简写形式哦. let  val = val || 'active'  ...

  5. ASP.NET与.NET区别

    1.NET是什么? .Net全称.NET Framework是一个开发框架,不是一门编程语言,简单的来说 就是一组类库框架,.NET开发支持C#.VB.NET.J#.Js和Managed C++等 其 ...

  6. 青蛙的约会----POJ1061

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 133905   Accepted: 29707 Descript ...

  7. Scrapy错误-no active project Unknown command: crawl

    在运行别人的scrapy项目时,使用命令行 scrapy crawl douban(douban是该项目里爬虫的名字,烂大街的小项目---抓取豆瓣电影). 执行之后,出现报错如下: 上网搜寻无果. 大 ...

  8. postgreSQL 常用命令 二

    本次测试基与PostgreSQL 10.x版本 创建用户 [postgres@rtm2 data]$ /opt/pgsql-10/bin/createuser rentaomin [postgres@ ...

  9. PIE SDK 坐标系创建、定义、对比

    1.    坐标系创建 1.1    从WKT字符串导入空间参考 ISpatialReference接口是一个任何空间参考对象都实现的接口,它包含了所有空间参考对象都公有的方法和属性,如获得空间参考对 ...

  10. PIE SDK矢量数据简单渲染

    1. 功能简介 PIE SDK对数据的符号化分为矢量数据渲染和栅格数据渲染两大类. 目前PIE SDK中针对矢量数据渲染包括简单渲染.唯一值渲染.分级渲染.自定义渲染:针对栅格数据渲染包括拉伸渲染.R ...