Python使用shutil模块实现文件拷贝


Posted in Python onJuly 31, 2020

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python下尝试多线程编程
Apr 28 Python
python清除字符串里非数字字符的方法
Jul 02 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
python将时分秒转换成秒的实例
Dec 07 Python
python求前n个阶乘的和实例
Apr 02 Python
python实现贪吃蛇双人大战
Apr 18 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
python FTP编程基础入门
Feb 27 Python
Python基于pyjnius库实现访问java类
Jul 31 #Python
Python如何将字符串转换为日期
Jul 31 #Python
Python在字符串中处理html和xml的方法
Jul 31 #Python
python中selenium库的基本使用详解
Jul 31 #Python
Python过滤序列元素的方法
Jul 31 #Python
python中的django是做什么的
Jul 31 #Python
如何基于python把文字图片写入word文档
Jul 31 #Python
You might like
php分页思路以及在ZF中的使用
2012/05/30 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
详解JS面向对象编程
2016/01/24 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
使用AngularJS对表单提交内容进行验证的操作方法
2017/07/12 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
介绍一下linux的文件系统
2015/10/06 面试题
Java程序员面试题
2013/07/15 面试题
毕业大学生自荐信
2014/06/17 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
笔记本自带的win11如何跳过联网激活?
2022/04/20 数码科技
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android