使用python只从.tar.gz文件中提取jpg文件



问题总结:在我的一个文件夹中,我有。tar.gz文件,我需要提取所有的图像(.jpg &.png)。但是我必须使用.tar.gz扩展名(使用路径到目录)来提取它,而不是使用通常的输入file_name来提取它。我需要这在GUI (Tkinter)的一个部分的图像分类项目。

Code I'm trying:

import os
import tarfile
def extractfile():
os.chdir('GUI_Tkinter/PMC_downloads')
with tarfile.open(os.path.join(os.environ['GUI_Tkinter/PMC_downloads'], f'Backup_{self.batch_id}.tar.gz'), "r:gz") as so:
so.extractall(path=os.environ['GUI_Tkinter/PMC_downloads'])

代码没有给出任何错误,但它不工作。请告诉我如何通过指定。tar.gz文件扩展名来提取它。

我想你可以使用这个代码。

import tarfile
import os
t = tarfile.open('example.tar.gz', 'r')
for member in t.getmembers():
if ".jpg" in member.name:
t.extract(member, "outdir")
print(os.listdir('outdir'))

希望对你有帮助。谢谢。

在不指定文件名的情况下提取文件夹中存在的一个或多个.tar.gz或zip文件的通用/动态方法。这是通过使用扩展名和文件的路径(位置)来执行的。您可以从.tar.gz/zip/压缩文件中提取任何类型的文件(.pdf, .nxml, .xml, .gif等),只需在此代码中提到所需文件的扩展名作为成员名。因为,我需要将.tar.gz文件中的所有图像提取到一个文件夹中。因此,在下面的代码中,我指定了扩展名。jpg和。png,并在名为"Extracted_Images"的文件夹下提取同一目录下的所有图像。如果您愿意,还可以通过提供path参数来更改需要提取文件的目录。

例如"C:/Users/dell/project/histo_images"而不是"Extracted_Images"


import tarfile
import os
import glob
path = glob.glob("*.tar.gz")
for file in path:
t = tarfile.open(file, 'r')
for member in t.getmembers():
if ".jpg" in member.name:
t.extract(member, "Extracted_Images")
elif ".png" in member.name:
t.extract(member, "Extracted_Images")

相关内容

最新更新