20180209-shutil模块

下面讲解shutil模块的相关操作:

  1.shutil.copyfileobj(fsrc, fdst, length=16*1024) 将fsrc文件内容拷贝到fdst文件中,length是指一次拷贝多少个字节

源码:
def
copyfileobj(fsrc, fdst, length=16*1024):"""copy data from file-like object fsrc to file-like object fdst"""while 1:buf = fsrc.read(length)if not buf:breakfdst.write(buf)

  不难发现,copyfileobj方法中length参数是指一次拷贝多少个字符(以字符形式读取文件,如果以字节的形式读取,则length值字节数),内部的实现通过一个while死循环来遍历fsrc文件的length长度字符,并写入fdst文件中,如果不写则默认length = 16 * 1024

# 1.将文件内容拷贝到另一个文件中 shutil.copyfileobj(fsrc, fdst, length=16*1024),可以指定一次拷贝多少内容,本例不写,则默认读取16 * 1024个字节
ret = shutil.copyfileobj(open('file_01.txt'),open('file_02.txt','w'))
print('将文件内容拷贝到另一个文件中:',ret)

  2.shutil.copyfile(src, dst) 拷贝文件,dst目标文件无需存在

#2.拷贝文件 shutil.copyfile(src, dst) dst目标文件无需存在
ret = shutil.copyfile('file_01.txt','file_03.txt')
print('拷贝文件:',ret)

  3.shutil.copymode(src,dst)仅拷贝权限,内容、组、用户均不变,dst目标文件必须存在

# 3.仅拷贝权限,内容、组、用户均不变 dst目标文件必须存在
ret = shutil.copymode('file_01.txt','file_04.txt')
print('仅拷贝权限:',ret)

  4.shutil.copystat(src,dst)仅拷贝状态的信息,包括mode bits、atime、mtime、flags  dst目标文件必须存在

# 4.仅拷贝文件状态 包括mode bits、atime、mtime、flags  dst目标文件必须存在
ret = shutil.copystat('file_01.txt','file_05.txt')
print('仅拷贝文件状态:',ret)

  5.shutil.copy(src,dst)拷贝文件和权限  dst目标文件无需存在

# 5.shutil.copy(src,dst) 拷贝文件和权限 dst目标文件无需存在
ret = shutil.copy('file_01.txt','file_06.txt')
print('拷贝文件和权限:',ret)

  6.shutil.copy2(src,dst)拷贝文件和状态信息 dst目标文件无需存在

# 6.shutil.copy2(src,dst) 拷贝文件和状态 dst目标文件无需存在
ret= shutil.copy2('file_01.txt','file_07.txt')
print('拷贝文件和状态:',ret)

  7.shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹,ignore参数可以设置忽略文件  dst目标文件不能存在,否则报错

    shutil.ignore_patterns('__init__.py','views.py')

# 7.shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹
ret = shutil.copytree('file01','file02',ignore=shutil.ignore_patterns('__init__.py','views.py'))
print('递归拷贝文件目录:',ret)

  8.shutil.rmtree(src) 递归删除文件 src源文件必须存在,否则报错

# 8.shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的删除文件
ret = shutil.rmtree('file02')
print('递归删除文件:',ret)

  9.shutil.move(src,dst)递归移动文件,src源文件必须存在,否侧报错

# 9.shutil.move(src,dst) 递归移动文件,类似mv命令
ret = shutil.move('file01','file02')
print('递归移动文件:',ret)

重点学习

  项目的目录结构如下:

     

  1.压缩文件
  make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None)
  创建压缩包并返回文件路径,例如zip、tar
  base_name 压缩包的文件名,也可以是压缩包的路径,只是文件名时,则保存到当前目录,否则保存到指定路径
  format 压缩包的种类 'zip'、'tar'、'bztar'、'gztar'
  root_dir 要压缩的文件夹路径(默认当前目录)
  logger 用于记录日志,通常是logging.Logger对象

# 压缩fil02文件夹,由于shutil_exercise.py所在目录是shutil下,如果不指定root_dir,怎会将shutil目录下的所有文件都压缩到file02.zip包中
# 将/file02下文件压缩放置到当前目录下
ret = shutil.make_archive('file02','zip',root_dir='./file02') print('压缩文件:',ret)

  shutil对压缩包的处理是调用ZipFile和TarFile两个模块进行的,详细讲解:

  zipfile的压缩/解压

# 压缩
z = zipfile.ZipFile('file01.zip','w')
z.write('file_01.txt')
z.write('file_02.txt')
z.write('file02')
z.close()# 解压 
# 将file01.zip压缩包的内容解压到当前目录的file01目录下
z = zipfile.ZipFile('file01.zip','r')
z.extractall(path='./file01')
z.close()

  注意:zipfile不能压缩目录,只能压缩文件,也就意味着压缩后的文件中file02只是一个空目录,目录下的文件不会被压缩

 

  tarfile的压缩/解压

import tarfile
# 压缩
t = tarfile.open('tmp/file01.tar','w')
t.add('file_01.txt',arcname='file_01.bak')
t.add('file01')
t.close()# 解压
t = tarfile.TarFile('tmp/file01.tar','r')
t.extractall('tmp/tar')
t.close()

  注意:tarfile可以压缩目录

    

转载于:https://www.cnblogs.com/it-q/p/8435676.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pandas使用小技巧

1.获取存在缺失值的行或列 在进行缺失值筛选时,可以对缺失严重的行和列进行删除,首先进行缺失值的确定。 (1)缺失值的列和每列的缺失情况 #对每列的缺失值进行统计,并逆序排列 data.isnull.sum().sort_values(ascendingFalse) (2)缺失值的…

Linux C高级编程——网络编程之包裹函数

Linux网络编程(六)——包裹函数 宗旨:技术的学习是有限的,分享的精神是无限的。 系统调用不能保证每次都成功,必须进行出错处理。包裹函数就是把一般函数加了出错处理。包裹函数首字母大写。 /***********************…

输入一个数3256,将他从小到大输出,就是2356

这是知乎上面的一个题目,挺有意思,面试的时候应该是作为基础题,很多人不屑于看这样的题目,但是到自己些的时候,就会有很多问题。题目要求输入一个数3256,将他从小到大输出,就是2356分析输入的是…

在过渡到Agile中的十种错误

原文: http://www.ddj.com/architect/193402902为了走得更快必须减缓转变。从传统开发方法论到Agile的过渡中最普遍的10种错误:1直接全部参与。没有以试验项目作为开始。这样造成在项目推行新的方法论有很高风险,因为你在时间紧迫或风险较大的项目中没有…

深度学习之负荷分解——LSTM(一对多)任务场景

1.任务场景 以家庭为例,假设该家庭有m种电器和总负荷的曲线,其中,总负荷为,各个电器的负荷有(m是电器个数,n是n个时刻)。我们需要通过对总负荷曲线进行分解,识别出该负荷有几种电器同时运行实现…

这是我见过最秀的代码

这么秀的代码,你能写出来吗?技术主管来了都不好使,main函数里第一个函数必须是这个。佛祖保佑版:void godBless(void) { // _ooOoo_ // o8888888o // …

java-构建jar带哟参数提示的

使用command的cli包构建带有参数提示的jar包 需要引入command cli的依赖 <commons.version>1.2</commons.version> <dependency><groupId>commons-cli</groupId><artifactId>commons-cli</artifactId><version>${commons.vers…

Cortex M3存储器映射

CortexM3存储器系统 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种 CM3 单片机间的移植。 存储空间的一些位置用于调试组件等私有外设&#xff0c;这个地址段被称为“私有外设区”。私…

sql server 分页

分页方案一&#xff1a;(利用Not In和SELECT TOP分页) 语句形式&#xff1a; SELECT TOP 10 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 20 id FROM TestTable ORDER BY id)) ORDER BY ID SELECT TOP 页大小 * FROM TestTable WHERE (ID NOT IN (SELECT TOP 页大小*页数 i…

这些年,NLP常见的预训练模型剖析

“预训练-微调”&#xff08;pre-training and fine-tune&#xff09; 已经成为解决NLP任务的一种新的范式。基于预训练语言模型的词表示由于可以建模上下文信息&#xff0c;进而解决传统静态词向量不能建模“一词多义”语言现象的问题。传统的词向量有one-hot&#xff08;杜热…

Linux Ftrace 使用

Ftrace相关的文章如何利用ftrace精确跟踪特定进程调度信息1、Ftrace 是什么东西&#xff1f;Ftrace是一个直接内置在Linux内核中的跟踪工具。许多发行版在最近的发行版中已经启用了各种各样的Ftrace配置。Ftrace给Linux带来的好处之一是能够看到内核中发生了什么。因此&#xf…

java中原始数据文件的输入

in.data中的数据"28.7812 34.4632 31.3381 31.2834..."File fileInnew File("in.data");//File fileOutnew File("out.data");if(fileIn.exists()){System.out.println("the files path:"fileIn.getPath());System.out.println("…

Cortex M3寄存器组

寄存器组 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、通用目的寄存器R0~R7 R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位&#xff0c;复位后的初始值是不可预料的。 2、通用目的寄存器 R8-R12 R8-R12 也被称为高组寄…

深度学习-超参数调优

在机器学习中有很多调优的方式机器学习——超参数调优&#xff0c;深度学习中也存在同样的方式&#xff0c;接下来&#xff0c;介绍一下深度学习框架里边的自动调参模块。 1. 基于Tensorflow的Keras tuner 官方教程如下&#xff1a;Introduction to the Keras Tuner | Tens…

【文章汇总】嵌入式Linux公众号

据悉,深圳某工程师沦为C语言笔试枪手 修改cmdline 把内存改成512MB 上拉电阻的作用

Leetcode分类

二叉树平衡二叉树easy 108. Convert Sorted Array to Binary Search Tree 2. 二叉树 617. Merge Two Binary Trees 104. Maximum Depth of Binary Tree 列表题&#xff1a;21. Merge Two Sorted Lists 字符串题数组题排序347. Top K Frequent Elements 归并递归70. Climbing S…

第5节 三个败家子(5)——刘封,被封印的秘密

根据《三国志刘封传》记载“刘封者&#xff0c;本罗侯寇氏之子&#xff0c;长沙刘氏之甥也。先主至荆州&#xff0c;以未有继嗣&#xff0c;养封为子。及先主入蜀&#xff0c;自葭萌还攻刘璋&#xff0c;时封年二十余”。等等&#xff0c;各位看官说了&#xff0c;时间上不对啊…

Paddle——常见的评估指标

在模型评估过程中&#xff0c;分类、回归、排序问题往往使用不同的指标进行评估。分类问题通常用准确率、召回率、精准率、F1值等指标进行评估&#xff1b;回归问题使用MSE、RMSE、R^2、MAPE等&#xff1b; 1 分类评估原理 1.1 准确率的局限性 我们经常接触的评价指标就是准…

大江大河,随笔观后感

我是「大江大河」的铁粉&#xff0c;非常喜欢这部剧&#xff0c;从这部剧里面能看到生活的一些影子。从这部剧里面也可以看到不同阶层的人们对待生活&#xff0c;对待理想&#xff0c;对待身边的朋友亲人的态度。—— 知乎热论「程开颜为什么输给了杨思申&#xff1f;」程开颜并…

Cortex M3内核架构

CortexM3内核架构 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元&#xff08; CPU&#xff09;。 完整的基于CM3的MCU还需要很多其它组件。在芯片制造商得到CM3处理器内核的使用授权…