无法使用 PIL 保存方法保存多个文件

问题描述

修改一个 vk4 转换器以允许将多个 .vk4 文件转换为 .jpg 图像文件。运行时,IDLE 不会给我一个错误,但它只能在结束进程之前设法转换一个文件。我认为问题在于 image.save() 似乎只影响单个文件,而我未能成功循环该命令以扩展到目录中的所有其他文件

代码

GROUP BY

在使用 PIL 模块时如何防止转换后的文件被覆盖?

谢谢。

解决方法

它会保存每个文件,但由于您始终为每个文件提供相同的名称 (image.save('sample.jpeg','JPEG')),因此只会保存最后一个文件,而其他所有文件都将被覆盖。您需要为每个文件指定不同的名称。有几种方法可以做到。一种是在使用 enumerate():

循环时添加索引
for i,img in enumerate(vkimages):

然后在保存时在文件名上使用 i:

image.save(f'sample_{i}.jpeg','JPEG')

另一种方法是使用原始文件名和 replace 扩展名。从您的代码看来,这些文件是 .vk4 文件。所以另一种可能性是使用相同的名称保存,但将 .vk4 替换为 .jpeg:

image.save(img.replace('.vk4','.jpeg'),'JPEG')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...