我在Linux机器上创建了一个.tar文件,如下所示:
tar cvf test.tar test_folder/
其中test_文件夹包含一些文件,如下所示:
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
文件。我不确定,我把事情搞砸了。任何建议都会很有帮助。提前谢谢
在代码中添加两行将解决您的问题:
解释:
.extractfile()
方法仅提供提取文件的内容(即其数据)它不将任何文件提取到文件系统。
因此,您必须自己阅读返回的内容(
img_file.read()
),并将其写入您选择的文件(outfile.write(...)
)或者-为了简化你的生活-改用
.extract()
方法。见my other answer这是因为extractfile()返回一个io.BufferReader对象,所以本质上是在目录中提取文件,并将io.BufferReader存储在变量中
您可以做的是,提取文件,然后在其他内容管理器中打开该文件
您可能想使用
.extract()
方法而不是.extractfile()
方法(请参见我的other answer):注:
您提取的文件将位于当前目录下的
test_folder
(可能是新创建的)文件夹中.extract()
方法返回None
,因此不需要分配它(img_file = tar.extract(...)
)相关问题 更多 >
编程相关推荐