0

我正在imageio使用生成的 .png 文件按模块制作 gif。尽管 .png 文件是按数字顺序排序的,但生成的 .gif 动画并不遵循此顺序。是什么原因?到目前为止,这是我的代码:

png_dir='png'
images=[]
for file_name in os.listdir(png_dir):
    if file_name.endswith('.png'):
        file_path = os.path.join(png_dir, file_name)
        images.append(imageio.imread(file_path))
imageio.mimsave('movie.gif', images, duration=1)

.png 文件就像file_01.png, file_02.png ... file_099.png

为什么生成的 gif 不是以 .png 文件的相同顺序生成的?

提前感谢您的帮助!

4

1 回答 1

3

假设文件是​​有序的,但是状态文档os.listdir(强调我的):

os.listdir(path='.')

返回一个列表,其中包含路径给定的目录中条目的名称。该列表按任意顺序排列,不包括特殊条目“.”。和 '..' 即使它们存在于目录中。

您可以自己对返回的列表进行排序:

for file_name in sorted(os.listdir(png_dir)):

注意:Python 没有内置的自然排序。如果这就是您要查找的内容,则应检查以下问题的答案:Python 是否具有用于字符串自然排序的内置函数?

于 2018-11-30T10:28:38.827 回答