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 错误和异常小结
Oct 09 Python
使用Python判断IP地址合法性的方法实例
Mar 13 Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
python实现图片识别汽车功能
Nov 30 Python
python多个模块py文件的数据共享实例
Jan 11 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
python中bytes和str类型的区别
Oct 21 Python
jupyter 实现notebook中显示完整的行和列
Apr 09 Python
python实现小程序推送页面收录脚本
Apr 20 Python
python em算法的实现
Oct 03 Python
Python实现抖音热搜定时爬取功能
Mar 16 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
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
js代码实现微博导航栏
2015/07/30 PHP
php PDO异常处理详解
2016/11/20 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
javaScript(JS)替换节点实现思路介绍
2013/04/17 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
加拿大留学自荐信
2014/01/28 职场文书
个人近期表现材料
2014/02/11 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
旷工辞退通知书
2015/04/17 职场文书
上班迟到检讨书
2015/05/06 职场文书
应收账款管理制度
2015/08/06 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android