这是我尝试的代码:
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提供给我的。
答案 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”,第二个调用解压缩它。