Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)相关的知识,希望对你有一定的参考价值。
Python中使用tarfile压缩、解压tar归档文件示例
前言
Python自带的tarfile模块可以方便读取tar归档文件,厉害的是可以处理使用gzip和bz2压缩归档文件tar.gz
和tar.bz2
。
与tarfile对应的是zipfile模块,zipfile是处理zip压缩的。
请注意:os.system(cmd)
可以使Python脚本执行命令,当然包括:tar -czf *.tar.gz *,tar -xzf *.tar.gz,unzip
等,也可以解决问题。
1. 使用tarfile对文件压缩
tarfile是python自带的包,可以直接: import tarfile
方式一:
import tarfile
# 创建压缩包名,获取压缩tar对象
tar = tarfile.open("/tmp/tartest.tar.gz","w:gz")
# 创建压缩包
for root, dir, files in os.walk("/tmp/tartest"): # os.walk() 方法可以创建一个生成器,用以生成所要查找的目录及其子目录下的所有文件。
for file in files:
fullpath = os.path.join(root, file) # 拼接路径
tar.add(fullpath) # 添加压缩文件
tar.close() # 关闭压缩文件流
方式二:
压缩路径下所有的.pkl
文件:
import tarfile
import os
# 创建压缩对象,指定路径及压缩文件名
tar = tarfile.open(r'E:\\lxd\\test\\test123.gz.tar','w')
for root, dirs, files in os.walk(r'E:\\lxd\\test'):
for _files in files:
if 'pkl' in _files:
tar.add(os.path.join(root,_files),arcname=_files)
tar.close()
方式三:
import tarfile
import os
tar = tarfile.open(r'E:\\lxd\\test\\test1234.gz.tar','w')
for files in os.listdir(r'E:\\lxd\\test'): # 列举出当前路径下的所有文件
if 'pkl' in files:
tar.add(os.path.join(root, files),arcname=files)
tar.close()
方式四:
使用with,上下文管理器:(推荐)
import os
import tarfile
with open(root_path, 'w') as f:
for filename in listdir(root_path2):
f.add(os.path.join(root_path3, filename), arcname=filename)
2. 使用tarfile对文件解压
def extract(tar_path, target_path):
try:
tar = tarfile.open(tar_path, "r:gz")
file_names = tar.getnames()
for file_name in file_names:
tar.extract(file_name, target_path)
tar.close()
except Exception, e:
raise Exception, e
将压缩的文件全部就地解压:
tar = tarfile.open(r'E:\\lxd\\test\\test1234.gz.tar','r')
tar.extractall()
tar.close()
or
# 如果未解压,便使用tarfile进行解压
if not isdir(dataset_folder_path):
with tarfile.open('flower_photos.tar.gz') as tar:
tar.extractall()
tar.close()
其中open的原型是:
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
mode的值有:
'r' or 'r:*' Open for reading with transparent compression (recommended).
'r:' Open for reading exclusively without compression.
'r:gz' Open for reading with gzip compression.
'r:bz2' Open for reading with bzip2 compression.
'a' or 'a:' Open for appending with no compression. The file is created if it does not exist.
'w' or 'w:' Open for uncompressed writing.
'w:gz' Open for gzip compressed writing.
'w:bz2' Open for bzip2 compressed writing.
加油!
感谢!
努力!
以上是关于Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)的主要内容,如果未能解决你的问题,请参考以下文章