Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)相关的知识,希望对你有一定的参考价值。

Python中使用tarfile压缩、解压tar归档文件示例

前言

Python自带的tarfile模块可以方便读取tar归档文件,厉害的是可以处理使用gzipbz2压缩归档文件tar.gztar.bz2

tarfile对应的是zipfile模块,zipfile是处理zip压缩的。

请注意os.system(cmd)可以使Python脚本执行命令,当然包括:tar -czf *.tar.gz *,tar -xzf *.tar.gz,unzip等,也可以解决问题。

1. 使用tarfile对文件压缩

tarfilepython自带的包,可以直接: 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.

参考Link Link Link

加油!

感谢!

努力!

以上是关于Python中使用tarfile压缩解压tar归档文件示例(最新+全面=强烈推荐! ! !)的主要内容,如果未能解决你的问题,请参考以下文章

Linux下常用压缩 解压命令和压缩比率对比

Linux下常用压缩 解压命令和压缩比率对比

tarfile/zipfile/shutil

python-文件压缩和解压

压缩与解压缩

Linux 命令详解-存档压缩