Python 如何打开tar文件并获取';它在它的一个文件里?

Python 如何打开tar文件并获取';它在它的一个文件里?,python,tarfile,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 它打印这个: 0x2a9431ea430处的“/.\u SA00000”TarInfo, TarInfo'SA00000'在0x2a9431e

这是我尝试的代码:

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
它打印这个:

0x2a9431ea430处的“/.\u SA00000”TarInfo, TarInfo'SA00000'在0x2a9431ea5c0,#有更多的成员不想全部展示 我试过:

x = t.extract('SA00000')

print(x)
它打印
None

我真的不明白。我在记事本中打开了tar文件,所有数据都在那里


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

Tar文件只是linux文件分组,没有真正的压缩。tar.gz是相同的东西,但是有压缩。无论您是否有tar或tar.gz文件,您都可以通过在压缩软件中打开该文件(建议使用7zip)来查看内部文件

如果您希望以编程方式完成此操作,我仍然建议您使用7zip,但应使用名为(7-Zip Extra:standalone console version,7z DLL,Far Manager插件)的独立CLI版本

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

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”,第二个调用提取它


Tar文件只是linux文件分组,没有真正的压缩。tar.gz是相同的东西,但是有压缩。无论您是否有tar或tar.gz文件,您都可以通过在压缩软件中打开该文件(建议使用7zip)来查看内部文件

如果您希望以编程方式完成此操作,我仍然建议您使用7zip,但应使用名为(7-Zip Extra:standalone console version,7z DLL,Far Manager插件)的独立CLI版本

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

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”,第二个调用提取它

不返回任何内容(默认返回
None
),它只是将
SA00000
指定的存档内容提取到文件中。您可能需要返回文件对象的。不返回任何内容(默认返回
None
),它只将
SA00000
指定的存档内容提取到文件中。您可能需要返回文件对象的。