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黑魔法之编码转换
Jan 25 Python
详解python中的文件与目录操作
Jul 11 Python
Python 多线程的实例详解
Sep 07 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
Python日志器使用方法及原理解析
Sep 27 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 Python
用Python进行栅格数据的分区统计和批量提取
May 27 Python
yolov5返回坐标的方法实例
Mar 17 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
德生H-501的评价与改造
2021/03/02 无线电
example2.php
2006/10/09 PHP
如何使用PHP获取网络上文件
2006/10/09 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
python实现用户管理系统
2018/01/10 Python
Python内置模块logging用法实例分析
2018/02/12 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
wxPython的安装与使用教程
2018/08/31 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
浅析HTML5中header标签的用法
2016/06/24 HTML / CSS
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
Java语言的优势
2015/01/10 面试题
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
大学生自荐书范文
2013/12/10 职场文书
企业文明单位申报材料
2014/05/16 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
责任书范本
2014/08/25 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
心灵点滴观后感
2015/06/02 职场文书
2015党建工作简报
2015/07/21 职场文书
MySQL分布式恢复进阶
2022/07/23 MySQL