如何打开一个tar文件并获取其文件之一中的数据?

时间:2019-10-15 18:53:09

标签: python tarfile

这是我尝试的代码:

import tarfile

# Opening zipped tarfile archive
t = tarfile.open(r'C:\Users\Luke\Desktop\my data.gz', "r:gz") 

t.getmembers() #Showing members within tarfile archive

它打印此:

TarInfo './._SA00000' at 0x2a9431ea430,
TarInfo 'SA00000' at 0x2a9431ea5c0,   #theres more members didn't want to show them all

我尝试过:

x = t.extract('SA00000')

print(x)

它打印None

我真的不明白。我已经在notepad中打开了tarfile,所有数据都在那里。

不知道这是否有帮助,但是我在Windows 10上使用python 3,并且数据是从MacOS提供给我的。

1 个答案:

答案 0 :(得分:0)

Tar文件只是Linux文件的分组,没有实际的压缩。 tar.gz是相同的东西,但是具有压缩功能。无论您有tar还是tar.gz文件,都可以通过在压缩软件中打开文件(建议使用7zip)来查看内部信息。

如果您希望通过编程方式进行操作,我仍然建议您使用7zip,但应使用名为7za.exe的独立CLI版本(7-Zip Extra:独立控制台版本,7z DLL,Far Manager插件)。 / p>

这将为您提供7zip的所有功能,而无需GUI膨胀。您将能够从您的应用程序中调用它;看起来您使用的是python,因此您可能会使用subprocess模块​​。这是一个示例:

def decompress():
     out=subprocess.call("7za.exe e -y -o'OUTPUT_FILE_NAME_1.tar' INPUT_FILENAME_1.tar.gz",stdout=fout,stderr=ferr)
        output=fout.read())  
        errors = ferr.read()
        if !errors:
            out=subprocess.call("7za.exe x -y -o'OUTPUT_FILE_NAME_2' OUTPUT_FILE_NAME_1.tar ",stdout=fout,stderr=ferr)
            output=fout.read())  
            errors = ferr.read() 

您最终将得到一个名为OUTPUT_FILE_NAME_2的文件夹或文件,然后就可以像走过tar / tar.gz文件一样走动。第一个调用解压缩“ tarball”,第二个调用解压缩它。

7za.exe reference