Python之路 - tarfile&zipfile&shutil模块
介绍 🍀
tarfile和zipfile,shutil都是文件压缩,打包,解压的模块.其中shuttile还支持文件的拷贝,复制等功能
zipfile模块 🍀
- 单个文件压缩
1 | import zipfile |
- 查看上面log.zip压缩包内的文件
1 | #用```r```只读模式打开压缩包 |
- 追加新的文件到log.zip压缩包
1 | #用```a```追加模式打开压缩包 |
- 解压压缩包.解压的目标目录如果不存在,会自动创建
1 | with zipfile.ZipFile('log.zip','r') as z: |
- 压缩目录下的所有文件
1 | def addfile(zipfilename, dirname): |
tarfile模块 🍀
tarfile模块和zipfile模块使用方法大同小异.
- 压缩单个文件
1
2
3with tarfile.open('module2.tar','w') as tar:
tar.add('sys.log')
tar.add('test.log')解压文件
1 | with tarfile.open('a.tar', 'r') as tar: |
- 压缩目录下的所有文件
1 | def compress_file(tarfilename, dirname): # tarfilename是压缩包名字,dirname是要打包的目录 |
- 添加文件到已有的压缩包中
1 | def addfile(tarfilename, dirname): # tarfilename是压缩包名字,dirname是要打包的目录 |
shutil模块 🍀
1 | #将文件内容拷贝到另外一个文件中 |
- shutil模块创建压缩文件
创建压缩包并返回文件路径,例如:zip、tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如 data_bak =>保存至当前路径
如:/tmp/data_bak =>保存至/tmp/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
- 打包module2目录为module2.tar.gz.放到当前文件
1 | shutil.make_archive(base_name="module2", |
- 解压shutile压缩包
shutil.unpack_archive(‘压缩包文件名’,extract_dir=’解压目标文件夹’,format=’压缩包格式’)
目标文件夹如果不存在,则自动创建
1 | shutil.unpack_archive('module2.tar.gz',extract_dir='log',format='gztar') |