python学习之路(常用系统模块4--shutil模块)

本文详细介绍了Python标准库中的shutil模块,包括文件复制、移动、压缩等操作的方法使用示例,帮助读者掌握shutil模块的基本功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shutil

以下方法需要import shutil

shutil.copyfileobj(fsrc, fdst, length=16384)
将文件内容拷贝到另一个文件中,可以部分内容
例:

import shutil
with open('a.txt','r',encoding='utf-8') as f1, open('copy_a','w',encoding='utf-8') as f2:
    shutil.copyfileobj(f1,f2)

shutil.copyfile(src, dst, *, follow_symlinks=True)
copy文件 与copyfileobj区别是,这个方法不需要open,可以直接将文件名传给参数
例:

shutil.copyfile('a.txt','copy_a') # 实现上面例子同样的效果。

shutil.copymode(src, dst, *, follow_symlinks=True)
将权限copy给其他的文件或目录


shutil.copystat(src, dst, *, follow_symlinks=True)
将本文件属性复制给其他的目录或文件


shutil.copy(src, dst, *, follow_symlinks=True)
将文件和权限都copy给其他的文件和目录


shutil.copy2(src, dst)
将文件和状态属性都copy给其他的文件和目录


shutil.copytree(‘原文件目录’,’新文件目录’)
将文件目录,递归copy将里面所有的目录与文件都进行copy一份。


shutil.rmtree(‘文件目录’)
递归进行删除。


shutil.move(‘旧文件’,’新文件’)
递归去移动文件


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

zipfile&tarfile

其实shutil的压缩,就是调用ZipFileTarFile 模块
这里说以下这两个模块

zipfile压缩

import zipfile

ZIPFILE_ZIP_FILE = zipfile.ZipFile('test.zip', 'w') # w 代表写入到这个压缩文件
ZIPFILE_ZIP_FILE.write('a.txt') # 写入 a.txt
ZIPFILE_ZIP_FILE.write('copy_a1') # 再写入 copy_a1
ZIPFILE_ZIP_FILE.close() # 记得关闭文件

这里写图片描述
生成如上的压缩文件
这里写图片描述

zipfile解压

file = zipfile.ZipFile('test.zip', 'r') # r是读zip文件
file.extractall() # 解压所有
file.close() # 关闭文件

tarfile压缩

与zipfile 一样的方式,

import tarfile

tarfile_open= tarfile.open('test.tar', 'w')
tarfile_open.add('a.txt')
tarfile_open.add('copy_a1')
tarfile_open.close()

tarfile解压

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tr-add_oil

打赏,我只要1块。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值