Python shutil模块用法实例分析


Posted in Python onOctober 02, 2019

本文实例讲述了Python shutil模块用法。分享给大家供大家参考,具体如下:

shutil模块

主要作用与拷贝文件用的。

1.shutil.copyfileobj(文件1,文件2):将文件1的数据覆盖copy给文件2。

import shutil
f1 = open("1.txt",encoding="utf-8")
f2 = open("2.txt","w",encoding="utf-8")
shutil.copyfileobj(f1,f2)

2.shutil.copyfile(文件1,文件2):不用打开文件,直接用文件名进行覆盖copy。

import shutil
shutil.copyfile("1.txt","3.txt")

3.shutil.copymode(文件1,文件2):之拷贝权限,内容组,用户,均不变。

def copymode(src,dst):
  """copy mode bits from src to dst"""
  if hasattr(os,'chmod'):
    st = os.stat(stc)
    mode = stat.S_IMODE(st.st_mode)
    os.chmod(dst,mode)

4.shutil.copystat(文件1,文件):只拷贝了权限。

def copystat(src,dst):
  """将所有的状态信息(模式位、时间、时间、标志)从src复制到dst"""
  st = os.stat(src)
  mode = stat.S_IMODE(st.st_mode)
  if hasattr(os, 'utime'):
    os.utime(dst,(st.st_atime,st.st_mtime))
  if hasattr(os, 'chmod')
    os.chmod(dst,mode)
  if hasattr(os, 'chflags') and hasattr(st,'st_flags'):
    try:
      os.chflags(dst, st.st_flags)
    except OSError,why:
      for err in 'EOPNOTSUPP', 'ENOTSUP':
        if hasattr(errno,err) and why.errno == getattr(errno, err):
          break
        else:
          raise

5.shutil.copy(文件1,文件2):拷贝文件和权限都进行copy。

def copy(src,dst):
  """copy data and mode bits ("cp src dst")
  The destination may be a directory.
  """
  if os.path.isdir(dst):
    dst = os.path.join(dst,os.path.basename(src))
    copyfile(src,dst)
    copymode(src,dst)

6.shutil.copy2(文件1,文件2):拷贝了文件和状态信息。

7.shutil.copytree(源目录,目标目录):可以递归copy多个目录到指定目录下。

  • shutil.ignore_patterns(*patterns)
  • shutil.copytree(src, dst, symlinks=False, ignore=None)

递归的去拷贝文件

例如:copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))

8.shutil.rmtree(目标目录):可以递归删除目录下的目录及文件。

9.shutil.move(源文件,指定路径):递归移动一个文件。

10.shutil.make_archive():可以压缩,打包文件。

import shutil
shutil.make_archive("shutil_archive_test","zip","D:\新建文件夹 (2)")

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

创建压缩包并返回文件路径,例如: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 两个模块来进行的,详细:

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()
z.close()

tarfile 压缩解压

import tarfile
# 压缩
tar = tarfile.open('your.tar','w')
tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip')
tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip')
tar.close()
# 解压
tar = tarfile.open('your.tar','r')
tar.extractall() # 可设置解压地址
tar.close()

第二种方法:

import zipfile
z = zipfile.ZipFile("day5.zip","w")
z.write("a")

解压:

z.extractall("a")

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
python字符类型的一些方法小结
May 16 Python
Python Requests库基本用法示例
Aug 20 Python
python对视频画框标记后保存的方法
Dec 07 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
详解Python time库的使用
Oct 10 Python
python解析命令行参数的三种方法详解
Nov 29 Python
flask实现验证码并验证功能
Dec 05 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
Pycharm如何自动生成头文件注释
Nov 14 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 #Python
Python全栈之列表数据类型详解
Oct 01 #Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 #Python
使用Python制作一个打字训练小工具
Oct 01 #Python
Python + Flask 实现简单的验证码系统
Oct 01 #Python
python 矢量数据转栅格数据代码实例
Sep 30 #Python
python多进程间通信代码实例
Sep 30 #Python
You might like
德生S2000电路分析
2021/03/02 无线电
php下的权限算法的实现
2007/04/28 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
JSON相关知识汇总
2015/07/03 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
js实现弹窗效果
2020/08/09 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
Python实现字典的key和values的交换
2015/08/04 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
利用Python破解斗地主残局详解
2017/06/30 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
自我评价范文
2013/12/22 职场文书
优质护理心得体会
2016/01/22 职场文书