问题描述
我修改了一个 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')