shutil 模块简单使用

shutil.copyfileobj(fsrc, fdst,[ length]):拷贝文件句柄,将类文件对象fsrc的内容复制到类文件对象fdst。如果给定整数长度,则为缓冲区大小。如果长度是负值意味着复制数据时不需要以块的形式对源数据进行循环,默认情况下,数据是块读取的,以避免不受控制的内存消耗。注意,如果fsrc对象的当前文件位置不是0,那么只复制从当前文件位置到文件末尾的内容。

如下,拷贝文件操作:

import shutil
with open("test.txt",mode="r",encoding="utf-8") as f1, \
open("abc",mode="a",encoding="utf-8") as f2:
shutil.copyfileobj(f1,f2) # 拷贝文件句柄

拷贝后的数据如下图所示:

shutil.copyfile(src, dst, *, follow_symlinks=True)

src:源文件。

dst:目标文件

*:模式不用管编码方式默认是utf-8

仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

如果follow_symlinks为false, src是一个符号链接(快捷方式),那么将创建一个新的符号链接(快捷方式),而不是复制src指向的文件。

文件拷贝,操作如下:

import shutil
shutil.copyfile("test.txt","abc")

拷贝后如下图所示:

shutil.copymode(src, dst, *, follow_symlinks=True):将src权限复制到dst。文件内容、所有者和组不受影响。如果follow_symlinks为假,并且src和dst都是符号链接,copymode()将尝试修改dst本身的模式(而不是它指向的文件)。此功能并非在每个平台上都可用;有关更多信息,请参见copystat()。如果copymode()不能修改本地平台上的符号链接,并且被要求这样做,那么它将什么也不做并返回。

shutil.copystat(src, dst, *, follow_symlinks=True):将src文件状态拷贝到dst,dst文件必须存在。如上次访问时间、上次修改时间和标志从src复制到dst。在Linux上,copystat()也尽可能地复制“扩展属性”。文件内容、所有者和组不受影响。

如果follow_symlinks为假,并且src和dst都引用符号链接,copystat()将对符号链接本身进行操作,而不是对符号链接引用的文件进行操作,从src符号链接读取信息,并将信息写入dst符号链接。

shutil.copy(src, dst, *, follow_symlinks=True):将文件src复制到文件或目录dst。如果dst指定一个目录,该文件将使用来自src的文件名复制到dst文件夹中,如果dst是文件名将src文件内容复制一份到dst文件中。

拷贝文件test.txt内容到abc中,拷贝test.txt到一个目录下。

import shutil
shutil.copy("test.txt","abc")
shutil.copy("test.txt",r"I:\python_work\test")

拷贝后的内容如下:

shutil.copy2(src, dst, *, follow_symlinks=True):功能与copy相同,但可以试图保存目标文件的原数据,(实验没成功,拷贝后会覆盖原有数据)。

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False):递归复制位于src的整个目录树,返回目标目录。由dst命名的目标目录必须不存在,它将被当做父目录。

import shutil
shutil.copytree("a","z")

如下图示拷贝后的数据:

shutil.rmtree(pathignore_errors=Falseonerror=None):递归的删除目录,一定要注意在删除时,无论目录是空目录还是有文件的目录,都会不提示的删除,而且删除的数据不经过回收站,无法恢复,所以慎用。

import shutil
shutil.rmtree("z")

shutil.move(srcdstcopy_function=copy2):相当于剪切,如果在同目录下就相当于重命名的操作。

如下面相当于重命名操作,剪切也类似就不演示了。

import shutil
shutil.move("abc","abc.txt")

shutil.disk_usage(path):以命名元组的形式返回给定路径的磁盘使用情况统计信息,属性为total、used和free,即总空间、已用空间和可用空间量(以字节为单位)。在Windows上,路径必须是目录;在UNIX上,路径可以是文件或目录。

import shutil
ret = shutil.disk_usage(r"I:\python_work")
print(ret) # 打印字节形式 # 打印GB形式的
print("total:",int(ret[0] / (1024 ** 3)),"GB")
print("used:",int(ret[1] / (1024 ** 3)),"GB")
print("free",int(ret[2] / (1024 ** 3)),"GB")

内容如下:

shutil.chown(path, user=None, group=None):更改文件用户的所有者和用户组。

shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None):返回可以行文件的路径,如下所示:

import shutil
print(shutil.which("cmd")) # 打印内容如下
C:\Windows\system32\cmd.EXE

shutil.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:要被打包的文件路径

base_dir:被打包文件的路径,优先级高于root_dir

owner:用户,默认当前用户

group:组,默认当前组

logger:用于记录日志,通常是logging.Logger对象

如下:

import shutil
shutil.make_archive(base_name=r"I:\test\python_work_zip",
format="zip", root_dir=r"I:\test")

打包后的内容如下:

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的

zipfile模块

压缩文件:

import zipfile
z = zipfile.ZipFile('test.zip', 'w') # 压缩后的文件名
z.write('test') # 要被压缩的文件
z.close() # 关闭zip对象

压缩后的内容如下:

解压文件:

import zipfile
z = zipfile.ZipFile('test_1.zip', 'r') # 要被解压的文件
z.extractall(path=r'I:\test') # 将提取后的文件保存到路径中
z.close()

解压后的文件如下:

tarfile压缩:

import tarfile
t=tarfile.open('test.tar','w') # 压缩后的名字
t.add('test',arcname='a.bak') # 要压缩的文件和压缩后将被压缩文件改名为a.bak
t.close()

压缩后的文件内容如下:

解压:

import tarfile
t=tarfile.open('test.tar','r') # 要被解压的包
t.extractall(path=r"I:\test") # 解压后保存的路径
t.close()

解压后内容如下:


下一篇:re正则表达式:https://www.cnblogs.com/caesar-id/p/10467396.html

python模块shutil的更多相关文章

  1. python模块------shutil

    说明 shutil -- High-level file operations 是一种高层次的文件操作工具 类似于高级API,而且主要强大之处在于其对文件的复制与删除操作更是比较支持好. copy() ...

  2. python(6)-shutil模块

    高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中: #源码 def copyfileobj(fsr ...

  3. Python 第五篇(下):系统标准模块(shutil、logging、shelve、configparser、subprocess、xml、yaml、自定义模块)

    目录: shutil logging模块 shelve configparser subprocess xml处理 yaml处理 自定义模块 一,系统标准模块: 1.shutil:是一种高层次的文件操 ...

  4. python模块之os sys shutil

    os模块 os模块是与操作系统交互的一个接口 #当前执行这个python文件的工作目录相关的工作路径 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir( ...

  5. python基础--shutil模块

    shutil模块提供了大量的文件的高级操作. 特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.对单个文件的操作也可参见os模块. 注意 即便是更高级别的文件复制函数(shutil.cop ...

  6. Python模块:shutil、序列化(json&pickle&shelve)、xml

    shutil模块: 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fscr,fdst [, length])   # 将文件内容拷贝到另一个文件中 import shu ...

  7. python day 9: xlm模块,configparser模块,shutil模块,subprocess模块,logging模块,迭代器与生成器,反射

    目录 python day 9 1. xml模块 1.1 初识xml 1.2 遍历xml文档的指定节点 1.3 通过python手工创建xml文档 1.4 创建节点的两种方式 1.5 总结 2. co ...

  8. python笔记7 logging模块 hashlib模块 异常处理 datetime模块 shutil模块 xml模块(了解)

    logging模块 日志就是记录一些信息,方便查询或者辅助开发 记录文件,显示屏幕 低配日志, 只能写入文件或者屏幕输出 屏幕输出 import logging logging.debug('调试模式 ...

  9. Python 文件操作模块 shutil 详解

    1.导入模块 shutil import shutil 2.shutil方法 2.1 shutil.copy(src,dst) //将 src 复制到 dst 保留文件权限    例:将Alan复制到 ...

随机推荐

  1. Netty:ChannelInitializer

    1. 作用 用于在某个Channel注册到EventLoop后,对这个Channel执行一些初始化操作.ChannelInitializer虽然会在一开始会被注册到Channel相关的pipeline ...

  2. vue总结

    1.库和框架的区别 库:jquery 本质上就是一些列函数的集合,将一些函数封装到一个独立的就是文件中 在使用的jquery的时候,是由开发人员说了算的,也就是说开发人员起到了主导作用,而jquery ...

  3. Python内置函数(29)——help

    英文文档: help([object]) Invoke the built-in help system. (This function is intended for interactive use ...

  4. HTML基础知识点

    HTML    1.一套规则,浏览器认识的规则.    2.开发者:        学习Html规则        开发后台程序:            - 写Html文件(充当模板的作用) **** ...

  5. QWebView加载网页

    开发环境:win10家庭中文版,vs2013,qt5.5.1 目的:使用webkit加载web页面代码如下: #include #include #ifdef _DEBUG#pragma commen ...

  6. IIS与ASP.NET对请求的处理

    IIS接收请求到进入CLR 当用户向服务器发送的请求时,以驱动形式运行的HTTP.SYS接收到该请求,将其分发给W3SVC:IIS6中,W3SVC会去解析出UR,并根据从Metabase获取的URL与 ...

  7. CentOS 7 安装 JAVA环境(JDK 1.8)

    1.打开url选择jdk1.8下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  8. 命令行分析组件IKende.CLI

    IKende.CLI是一款开源的命令行分解组件,它可以简地把命令行字符转换成命令对象.在编写CLI应用的时候经常要对命令字符进行繁锁的分解和转换工作,而IKende.CLI的存也是为了解决以上问题而产 ...

  9. Java Pom.xml 详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  10. 安装VS时,双击setup.exe后界面一闪而过的问题

    问题:安装VS时,双击setup.exe界面一闪而过的问题 解决: 百度后说需要到"控制面板/添加和管理程序"关闭系统自带的netframework3.x及以上版本. 1.查看所有 ...