在Python 3中将gzip与包含多个文件的存档一起使用

用户名

所以基本上我有一个像这样的文件系统:

main_archive.tar.gz
  main_archive.tar
    sub_archive.xml.gz
      actual_file.xml

这个档案中有数百个文件...因此,基本上,该gzip软件包可以在Python 3中与多个文件一起使用吗?我只用一个压缩的文件使用它,所以我对如何遍历多个文件或多个级别的“压缩”感到困惑。

我通常的解压缩方法是:

with gzip.open(file_path, "rb") as f:
  for ln in f.readlines():
    *decode encoding here*

当然,这有多个问题,因为通常“ f”只是一个文件...但是现在我不确定它代表什么?

任何帮助/建议将不胜感激!

编辑1:

我已经接受了以下答案,但是如果您正在寻找类似的代码,则我的骨干基本上是:

tar = tarfile.open(file_path, mode="r")
for member in tar.getmembers():
    f = tar.extractfile(member)
    if verbose:
        print("Decoding", member.name, "...")
    with gzip.open(f, "rb") as temp:
        decoded = temp.read().decode("UTF-8")
        e = xml.etree.ElementTree.parse(decoded).getroot()
        for child in e:
            print(child.tag)
            print(child.attrib)
            print("\n\n")

tar.close()

使用的主要包名gziptarfilexml.etree.ElementTree

三元组

gzip仅支持压缩单个文件或流。在您的情况下,提取的流是一个tar对象,因此您将使用Python的tarfile来操作提取的内容。该库实际上知道如何处理,.tar.gz因此您无需显式提取gzip自己。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python 3中将CSV编写器与GZIP文件一起使用?

在Python 3中将textwrap.dedent()与字节一起使用

在Python中将min(,[,key])与多个参数一起使用

我在python 3中将生成器与输入函数一起使用时遇到问题

如何在OSX 10.6中将MySQLdb与Python和Django一起使用?

在Python 2.7中将参数化查询与mysql.connector一起使用

如何在熊猫,python3中将条件与其他行(时间序列数据中的先前时刻)一起使用

将Python Z3与QWORD一起使用

在笔记本目录中将函数与其他python文件中的变量一起使用

Power BI:如何在Power Query Editor中将Python与多个表一起使用?

使用python查看.gz存档中包含的文件

如何在python中将argparse与json文件一起使用

如何在ReadTheDocs中将matplotlib的plot-directive与python-3一起使用?

在Python中将OpenCL加速功能与OpenCV3一起使用

在Unity3D游戏脚本中将Python脚本与PIP包一起使用

如何在Python中将if语句与数组一起使用?

在AMD GPU中将Python + Theano与OpenCL一起使用

如何在OSX中将OpenCV与python一起使用?

在Python中将Dicom图像与OpenCV一起使用

在Python中将knnMatch与opencv一起使用时出错

在Python中将__repr__与shelve模块一起使用

在 python 中将类与 Tkinter 一起使用

如何在 Python 中将 DataFrame.filter 与包含 unicode 的正则表达式一起使用?

如何编译多个C ++文件以将它们与Python ctypes一起使用?

在Python中,如何将多个轴组合在一起?

如何使用python将头文件与数据文件结合在一起?

将单个celery与多个python守护程序一起使用

Python-将多重处理与多个参数一起使用不起作用

将“ if not”与多个字符串参数一起使用Python