如何使用python查找图像文件并将其保存为其他文件格式?

时间:2019-11-12 20:51:34

标签: python rename

我有一个文件夹,其中包含很多文件夹(52个文件夹),命名非常复杂。 在每个文件夹中,包含80个文件夹,我只想打开其中的20个。 每20个文件夹包含12张图像(有些是dicom,有些是jpeg)。我只想选择一个图像并创建一个文件夹并将其另存为jpg。

这里的问题是, 52个文件夹的名称很复杂。 对于所有52个文件夹,80个文件夹的名称完全相同。 (A1,... A20,B1,...,B20,C1,... C20,D1,...,D20) 此外,还有12张图片(A1ori_0001,A1cha_0001等)。 另一个问题是这12张图片在52个文件夹中具有相同的名称。

希望这个问题是可以理解的。

2 个答案:

答案 0 :(得分:1)

没有示例代码,我只能做很多事情。但这也许会为您指明正确的方向。

import glob, os
from PIL import Image
os.chdir("/mydir")
for file in glob.glob("*.jpeg"):
    if file.endswith(".jpeg"):
        img = Image.open(file)
        img.save('image.png')

答案 1 :(得分:0)

在我看来,您至少有四个问题:

  1. 试图遍历仅20个“特殊”文件夹之一。您对问题的措辞使您不清楚是指您知道的20个特定文件夹的名称,还是20个随机文件夹。我将假设是前者。
  2. 在这些文件夹中查找图像中的所有文件
  3. 对于步骤1中的给定文件夹,请将其中一张图片转换为.jpg文件。
  4. 将此转换后的文件移动到全新的文件夹中。

对于授予的#1,您可以使用os.walk()glob在给定目录及其所有子目录中搜索所需的文件。但这将返回所有内容,这意味着您必须将其缩减。相反,如果您已经知道20个文件夹,则可以从其中的一个列表开始,然后分别对每个文件夹应用os.walk()以获取其各自的内容。

对于#2,请注意os.path.splitext(filename)[-1]返回文件filename的文件扩展名(包括'。')。因此,当您遍历目录并查找文件时,可以使用它来检查扩展名是否看起来像您想要隐藏为.jpg的文件类型(无论是什么:.bmp,.png等)

对于#3,您可以使用Python的PIL模块来转换给定的文件。有关如何执行此操作的更多信息,请参见this previous question

然后#4只是使用类似os.mkdir()的函数来创建目录,然后使用shutil.move()来移动它的问题。