我的代码看起来像是通过“图像”文件夹,然后是子文件夹并处理所有这些图像。
我现在需要将这些图像保存到并行目录,即名为“ Processed Images”的文件夹(与“ Images”文件夹位于同一目录),然后再保存至该文件夹内的子文件夹-这些子文件夹的名称与“图片”中的子文件夹-图片应保存为与该图片来自的子文件夹相同的名称。
我可以将图像保存到“处理的图像”中,但不能保存在其中的子文件夹中。
path = ("...\\Images")
for dirName, subdirList, fileList, in os.walk(path):
for file in fileList:
full_file_path = os.path.join(dirName, file)
if file.endswith((".jpg")):
image_file = Image.open(full_file_path)
image_file = image_file.convert('L')
image_file = PIL.ImageOps.invert(image_file)
image_file = image_file.resize((28, 28))
new_filename = file.split('.jpg')[0] + 'new.png'
path2 = ("...\\Processed Images")
image_file.save(os.path.join(path2, new_filename))
else: continue
答案 0 :(得分:0)
您可以使用函数os.mkdir()
创建一个新文件夹。 dirName
返回的os.walk()
为您提供了当前的文件夹路径,因此您只需提取所需路径的一部分,将其追加到...\\Processed Images
并根据需要创建新文件夹。
请确保对输入文件和输出文件使用两个单独的文件夹树。否则,os.walk()
将找到包含输出图像的新目录,并继续对其进行迭代。
答案 1 :(得分:0)
我认为您可以使用pathlib
来简化此代码。我不确定基本路径中的三个点(我认为它们应该是两个),但是它们可能对您有用。
from pathlib import Path
path = Path("...\\Images")
path2 = Path("...\\Processed Images")
path2.mkdir(exist_ok=True)
for jpg_file in p.glob('**/*.jpg'):
full_file_path = str(jpg_file)
image_file = Image.open(full_file_path)
image_file = image_file.convert('L')
image_file = PIL.ImageOps.invert(image_file)
image_file = image_file.resize((28, 28))
new_filename = jpg_file.stem + 'new.png'
image_file.save(str(path2 / new_filename))