使用 python 从 .tar.gz 文件中仅提取 jpg 文件
Extract only jpg files from a .tar.gz file using python
问题总结:
在我的一个文件夹中,我有 .tar.gz 文件,我需要从中提取所有图像(.jpg 和 .png)。但是我必须使用 .tar.gz 扩展名(使用目录路径)来提取它,而不是使用提供输入 file_name 的通常方式来提取它。我在图像分类项目的 GUI (Tkinter) 的一部分中需要这个。
我正在尝试的代码:
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'))
希望对您有所帮助。谢谢
Generic/dynamic 提取文件夹中存在的一个或多个 .tar.gz 或 zip 文件而不指定文件名的方法。这是通过使用文件的扩展名和路径(位置)来执行的。您可以从 .tar.gz/zip/compressed 文件中提取您想要的任何类型的文件(.pdf、.nxml、.xml、.gif 等)通过在此代码中提及所需文件的扩展名作为成员名称。因为,我需要将 .tar.gz 文件中的所有图像提取到一个文件夹中。因此,在下面的代码中,我指定了扩展名 .jpg 和 .png,并将所有图像提取到名为“Extracted_Images”的文件夹下的同一目录中。如果需要,您还可以通过提供路径参数更改需要提取文件的目录。
例如“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")
问题总结: 在我的一个文件夹中,我有 .tar.gz 文件,我需要从中提取所有图像(.jpg 和 .png)。但是我必须使用 .tar.gz 扩展名(使用目录路径)来提取它,而不是使用提供输入 file_name 的通常方式来提取它。我在图像分类项目的 GUI (Tkinter) 的一部分中需要这个。
我正在尝试的代码:
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'))
希望对您有所帮助。谢谢
Generic/dynamic 提取文件夹中存在的一个或多个 .tar.gz 或 zip 文件而不指定文件名的方法。这是通过使用文件的扩展名和路径(位置)来执行的。您可以从 .tar.gz/zip/compressed 文件中提取您想要的任何类型的文件(.pdf、.nxml、.xml、.gif 等)通过在此代码中提及所需文件的扩展名作为成员名称。因为,我需要将 .tar.gz 文件中的所有图像提取到一个文件夹中。因此,在下面的代码中,我指定了扩展名 .jpg 和 .png,并将所有图像提取到名为“Extracted_Images”的文件夹下的同一目录中。如果需要,您还可以通过提供路径参数更改需要提取文件的目录。
例如“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")