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

shutil.copyfileobj(fsrc, fdst[, length])(copyfileobj方法只会拷贝文件内容)

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

import shutil

shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

shutil.copyfile(src, dst)  (copyfile只拷贝文件内容)

拷贝文件

shutil.copyfile('f1.log', 'f2.log')

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

shutil.copy('f1.log', 'f2.log')

shutil.copy2(src, dst)

拷贝文件和状态信息

shutil.copy2('f1.log', 'f2.log'

shutil.copymode(src, dst)  (前提是dst文件存在,不然报错)

仅拷贝权限。内容、组、用户均不变

shutil.copymode('f1.log', 'f2.log')

shutil.copystat(src, dst)

仅拷贝状态的信息,即文件属性,包括:mode bits, atime, mtime, flags

shutil.copystat('f1.log', 'f2.log')

shutil.ignore_patterns(*patterns)  (忽略哪个文件,有选择性的拷贝)

shutil.copytree(src, dst, symlinks=False, ignore=None)

递归的去拷贝文件夹

shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

shutil.rmtree(path[, ignore_errors[, onerror]])

递归的去删除文件

shutil.rmtree('folder1')

shutil.move(src, dst)

递归的去移动文件,它类似mv命令,其实就是重命名。

shutil.move('folder1', 'folder3')

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径, 如:www                        =>保存至当前路径 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/

format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”

root_dir: 要压缩的文件夹路径(默认当前目录)

owner: 用户,默认当前用户

group: 组,默认当前组

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

#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录

import shutil

ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')

#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录

import shutil

ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

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()

z.close()

import tarfile

# 压缩

tar = tarfile.open('your.tar','w')

tar.add('/Users/wupeiqi/PycharmProjects/bbs2.log', arcname='bbs2.log')

tar.add('/Users/wupeiqi/PycharmProjects/cmdb.log', arcname='cmdb.log')

tar.close()

# 解压

tar = tarfile.open('your.tar','r')

tar.extractall() # 可设置解压地址

tar.close()

备注:zipfile压缩不会保留文件的状态信息,而tarfile会保留文件的状态信息

shutil python_python之shutil模块相关推荐

  1. shutil python_Python shutil 模块学习笔记

    shutil 名字来源于 shell utilities,有学习或了解过Linux的人应该都对 shell 不陌生,可以借此来记忆模块的名称.该模块拥有许多文件(夹)操作的功能,包括复制.移动.重命名 ...

  2. shutil,re,hashlib,subprocess模块及其相关

    shutil 高级的文件处理模块     封装的更简单了     主要是文件的复制,移动,压缩解压缩 f1 = open("test.txt","rb") f2 ...

  3. [06]python3 shutil高级文件操作模块

    1.shutil是shell utility的缩写 shutil.move直接从一个地方挪到另一个地方,而os.rename常常只能重命名,不能挪动位置. 功能是: >>>shuti ...

  4. Python3 shutil(高级文件操作 模块)

    原文: http://blog.csdn.net/Rozol/article/details/72672698 #!/usr/bin/env python # coding=utf-8 __autho ...

  5. python shutil_Python3 shutil(高级文件操作模块)

    1.shutil是shell utility的缩写 shutil.move直接从一个地方挪到另一个地方,而os.rename常常只能重命名,不能挪动位置. 功能是:>>>shutil ...

  6. inspect python_python之inspect模块

    inspect模块主要提供了四种用处: 1.对是否是模块.框架.函数进行类型检查 2.获取源码 3.获取类或者函数的参数信息 4.解析堆栈 一.type and members 1. inspect. ...

  7. sqlite3修改表内容python_Python sqlite3数据库模块使用攻略

    Python作为数据科学主流语言,被广泛用于数据读存.处理.分析.建模,可以说是无所不能. 数据一般存放在本地文件或者数据库里,之前介绍过如何使用python读取本地文件,也对# PyMySQL.cx ...

  8. inspect python_Python之inspect模块实现获取加载模块路径的方法

    该文主要介绍如何获取模块的路径,需要申明的是这里所说的模块可以是功能实现的该模块,也可以是别的模块. 使用到的是 inspect 模块的 .getsourcefile(需要获取的模块名) 创建test ...

  9. pickle模块 python_Python之Pickle模块

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

最新文章

  1. 2021-01-16交叉熵损失函数比均方误差损失函数优点在哪里
  2. android 弹出键盘 底部控件上移,如何设置底部控件view随着软键盘的弹出而上移...
  3. kvm虚拟化框架结构层次梳理及图形化的使用
  4. 几个常用的python脚本_几个很实用的python脚本
  5. 吾在这里给大家拜年啦!
  6. 宇宙无敌第一IED Visual studio 常用快捷键使用
  7. Gitea:从SVN迁移到Git
  8. 【Grafana】【一】Grafana 简介
  9. java excel列宽自动换行_Excel单元格中数据如何自动换行以便适应单元格的大小
  10. 微服务架构深度解析与最佳实践 - 第七部分:全文总结与引用材料
  11. VUEPC和手机屏幕适配
  12. CCC之I类设备、II类设备、III类设备的对比
  13. 如何使用百数批量打印二维码?
  14. 审批流程java 代码_基于jsp的企业流程审批系统-JavaEE实现企业流程审批系统 - java项目源码...
  15. 【Qt学习】 设计视频播放器界面
  16. SpringBoot——服务端数据校验
  17. redis的lrange_Redis Lrange 命令 - Redis 教程 - 自强学堂
  18. 成语——》如果蜗牛有爱情
  19. 程序员要不要考公务员
  20. outlook 发邮件时换行符号如何设置

热门文章

  1. Mysql基本操作命令
  2. ThinkPHP使用Nginx
  3. JSON_刘锋的博客
  4. Android中SoundPool播放音频示例
  5. 达梦数据库守护集群环境搭建
  6. R语言 t分布的推导 初级统计学 学生t分布理论
  7. 计算机游戏的起源,我的起源是什么类型的游戏?我的起源简介
  8. 神武跑环遇到服务器维护,神武6月6日维护内容解读 跑环限制取消
  9. 电脑速度慢怎么办?这些方法帮你快速提速!
  10. C#.Net中操作XML方法一