【问题标题】:gzip.open("file.tar.gz", "rb") vs. tarfile.open("file.tar.gz"); extractall()gzip.open("file.tar.gz", "rb") 与 tarfile.open("file.tar.gz");提取所有()
【发布时间】:2018-10-07 06:20:32
【问题描述】:

假设我有一个文件 - 'file.txt' tarred 和 gzipped,有什么区别:

    with tarfile.open('file.tar.gz') as tar:
        tar.extractall()
        with open('file.txt', 'rb') as f:
            x =  f.read()

    with gzip.open('file.tar.gz', 'rb') as f:
        x =  f.read()

在第一次我得到的输出没有奇怪的十六进制字符,这些字符确实出现在第二次。 gzip 中的 f.read 是否读取实际的 .tar 文件而不是读取普通文件,并且这些字符是 tar 文件头?

【问题讨论】:

    标签: python gzip tarfile


    【解决方案1】:

    正确的假设。 Tar 只是将文件粘合在一起而不进行压缩,而 gzip 只能压缩单个文件。 您正在使用 gzip.open 解压后读取 tar

    【讨论】:

    • 是否有一个函数 (my_tar_gz) 可以执行 tar -xvzf 之类的操作,所以我可以执行 with my_tar_gz(file.tar.gz) as f: f.read()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2013-09-23
    • 2017-06-20
    • 2012-02-23
    • 2014-09-26
    相关资源
    最近更新 更多