专栏首页菲宇python模块之shutil

python模块之shutil

高级的 文件、文件夹、压缩包 处理模块

shutil模块

copy()

功能:复制文件
格式:shutil.copy('来源文件','目标地址')
返回值:复制之后的路径

copy2()

功能:复制文件,保留元数据
格式:shutil.copy2('来源文件','目标地址')
返回值:复制之后的路径

copyfileobj()

将一个文件的内容拷贝的另外一个文件当中
格式:shutil.copyfileobj(open(来源文件,'r'),open('目标文件','w'))
返回值:无

copyfile()

功能:将一个文件的内容拷贝的另外一个文件当中
格式:shutil.copyfile(来源文件,目标文件)
返回值:目标文件的路径

copytree()

功能:复制整个文件目录
格式:shutil.copytree(来源目录,目标目录)
返回值:目标目录的路径
注意:无论文件夹是否为空,均可以复制,而且会复制文件夹中的所有内容

copymode()

功能:拷贝权限

copystat()

功能:拷贝元数据(状态)

rmtree()

功能:移除整个目录,无论是否空
格式:shutil.rmtree(目录路径)
返回值:无

move()

功能:移动文件或者文件夹
格式:shutil.move(来源地址,目标地址)
返回值:目标地址

which()

功能:检测命令对应的文件路径
格式:shutil.which(‘命令字符串’)
返回值:命令文件所在位置
注意:window和linux不太一样。 window的命令都是.exe结尾,linux则不是

disk_usage()

功能:检测磁盘使用信息
格式:disk_usage(‘盘符’)
返回值:元组

归档和解包操作


归档:将多个文件合并到一个文件当中,这种操作方式就是归档。 解包:将归档的文件进行释放。 压缩:压缩时将多个文件进行有损或者无损的合并到一个文件当中。 解压缩:就是压缩的反向操作,将压缩文件中的多个文件,释放出来。 注意:压缩属于归档!

make_archive()

功能:归档函数,归档操作
格式:shutil.make_archive('目标文件路径','归档文件后缀','需要归档的目录')
返回值:归档文件的最终路径

unpack_archive()

功能:解包操作
格式:shutil.unpack_archive('归档文件路径','解包目标文件夹')
返回值:None
注意:文件夹不存在会新建文件夹

get_archive_formats()

功能:获取当前系统已注册的归档文件格式(后缀)
格式:shutil.get_archive_formats()
返回值:列表   [(后缀,解释),(后缀,解释),(后缀,解释)...]

get_unpack_formats()

功能:获取当前系统已经注册的解包文件格式(后缀)
格式:shutil.get_unpack_formats()
返回值:列表   [(后缀,解释),(后缀,解释),(后缀,解释)...]

shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中

1 2 3

import shutil shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

shutil.copyfile(src, dst) 拷贝文件

1

shutil.copyfile('f1.log', 'f2.log')

shutil.copymode(src, dst) 仅拷贝权限。内容、组、用户均不变

1

shutil.copymode('f1.log', 'f2.log')

shutil.copystat(src, dst) 仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

1

shutil.copystat('f1.log', 'f2.log')

shutil.copy(src, dst) 拷贝文件和权限

1 2 3

import shutil shutil.copy('f1.log', 'f2.log')

shutil.copy2(src, dst) 拷贝文件和状态信息

1 2 3

import shutil shutil.copy2('f1.log', 'f2.log')

shutil.ignore_patterns(*patterns) shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹

1 2 3

import shutil shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

import shutil

shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的去删除文件

1 2 3

import shutil shutil.rmtree('folder1')

shutil.move(src, dst) 递归的去移动文件,它类似mv命令,其实就是重命名。

1 2 3

import shutil shutil.move('folder1', 'folder3')

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

  • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径, 如:www =>保存至当前路径 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
  • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
  • root_dir: 要压缩的文件夹路径(默认当前目录)
  • owner: 用户,默认当前用户
  • group: 组,默认当前组
  • logger: 用于记录日志,通常是logging.Logger对象

1 2 3 4 5 6 7 8

#将 /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 两个模块来进行的,详细:

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()
import tarfile

# 压缩
tar = tarfile.open('your.tar','w')
tar.add('/Users/wupeiqi/PycharmProjects/bbs2.log', arcname='bbs2.log')
tar.add('/Users/wupeiqi/PycharmProjects/cmdb.log', arcname='cmdb.log')
tar.close()

# 解压
tar = tarfile.open('your.tar','r')
tar.extractall()  # 可设置解压地址
tar.close()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django中Celery的实现介绍(一)

    Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。

    菲宇
  • 利用jieba和pyecharts做新闻关键词统计可视化

    pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常...

    菲宇
  • 什么是敏捷开发

    简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征...

    菲宇
  • Python 之 shutil模块

    copy2(src, dst):连同权限一起复制,相当于cp -p src dst

    py3study
  • shutil模块

    py3study
  • python之shutil模块

    shutil.copyfileobj(fsrc, fdst[, length])(copyfileobj方法只会拷贝文件内容) 将文件内容拷贝到另一个文件中

    py3study
  • python的shutil模块

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • Python-shutil模块1.shutil 是高级的文件,文件夹,压缩包处理模块。2.使用

    1.shutil.copyfileobj(fsrc, fdst[, length])     将文件内容拷贝到另一个文件中

    意气相许的许
  • Python学习--shutil

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

    py3study
  • python3-sys&shutil模块实战解析

    1.sys模块 import sys print(sys.version) #获取python解析器版本信息 print(sys.argv) #获取程序本身路...

    用户1679793

扫码关注云+社区

领取腾讯云代金券