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 相关文章推荐
DJANGO-ALLAUTH社交用户系统的安装配置
Nov 18 Python
python编写简单爬虫资料汇总
Mar 22 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
Python闭包之返回函数的函数用法示例
Jan 27 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
Python远程视频监控程序的实例代码
May 05 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
python实现图像拼接功能
Mar 23 Python
Python pip install如何修改默认下载路径
Apr 29 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python文本处理的方案(结巴分词并去除符号)
May 26 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
根德YB400的电路分析
2021/03/02 无线电
php采集时被封ip的解决方法
2010/08/29 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
layui分页效果实现代码
2017/05/19 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
搞笑创意广告语
2014/03/17 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
三峡大坝导游词
2015/01/31 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
Go归并排序算法的实现方法
2022/04/06 Golang
公历12个月名称的由来
2022/04/12 杂记