首页 > 解决方案 > 如何从 python 中的 .tar 存档中提取特定文件?

问题描述

我在 Linux 机器上创建了一个 .tar 文件,如下所示:

tar cvf test.tar test_folder/

其中 test_folder 包含一些文件,如下所示:

test_folder 
|___ file1.jpg
|___ file2.jpg
|___ ...

我无法使用 Python 以编程方式提取 tar 存档中的各个文件。更具体地说,我尝试了以下方法:

import tarfile
with tarfile.open('test.tar', 'r:') as tar:
    img_file = tar.extractfile('test_folder/file1.jpg')
    # img_file contains the object: <ExFileObject name='test_folder/test.tar'>

在这里,img_file似乎不包含请求的图像,而是包含源.tar文件。我不确定,我在哪里搞砸了。任何建议都会非常有帮助。提前致谢。

标签: pythontartarfile

解决方案


您可能想使用该.extract()方法而不是您的.extractfile()方法(请参阅我的其他答案):

import tarfile

with tarfile.open('test.tar', 'r:') as tar:
    tar.extract('test_folder/file1.jpg')         # .extract()  instead of .extractfile()

笔记:

  1. 您提取的文件将位于test_folder当前目录下的(可能是新创建的)文件夹中。

  2. .extract()方法返回,None所以不需要赋值( img_file = tar.extract(...))


推荐阅读