如何使用 for-loop 和 list 保存图像

How to save images with for-loop and list

我有一个包含多个子文件夹的文件夹。这些包含不同的文件。所有以“Red_Lines.png”结尾的文件我想保存在另一个目录中(我使用 Windows)。到目前为止,我的程序如下所示:

创建包含所有文件名的列表:

import os
List = []

for root, Lists, files in os.walk("C:/Users/.../Old_Folder/"):
    for name in files:
        if name.endswith("Red_Lines.png"):
            List.append(name)

创建具有完整路径和文件名的新列表:

k = []
for filename in List:
    k.append(os.path.join("C:/Users/.../New_Folder", filename).replace("\" , "/"))

终于保存图片了

from PIL import Image
for i in k:
    img = Image.open(i)
    img.save(i) 

但是现在,我收到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'C:/Users/.../New_Folder/123_Red_Lines.png'

错误信息让我很困惑。当然文件还不存在,我想创建它...

谢谢

我认为您尝试打开未在 Image.open(i) 中创建的文件,其中您的 i 是新路径。 Image.open应该是指Old_Folder

为什么不只使用命令行“复制”来复制文件而不需要 PIL 模块(示例代码中的注释 #2)。另一件事是,您的代码找不到要复制到的文件(示例代码中的注释 #1)。

你可以试试这个:

import os
List = []

for root, Lists, files in os.walk("C:/Users/.../Old_Folder/"):
    for name in files:
        if name.endswith("Red_Lines.png"):
            List.append(os.path.join(root, name)) # joining the root + name

destinationFile = "C:/Users/.../New_Folder"
for filename in List:
    os.system(f'copy "{filename}" "{destinationFile}"') # copy-command