我正在使用生成的.png文件通过imageio
模块制作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
为什么没有以与.png文件相同的顺序生成gif?
在此先感谢您的帮助!
答案 0 :(得分:2)
您假设文件是有序的,但是os.listdir
的{{3}}状态(强调我的意思):
os.listdir(path ='。')
返回一个列表,其中包含由path给出的目录中条目的名称。 列表以任意顺序,并且不包含特殊条目“。”。和“ ..”,即使它们存在于目录中。
您可以自己对返回的列表进行排序:
for file_name in sorted(os.listdir(png_dir)):
注意:Python没有内置的自然排序。如果这正是您要寻找的内容,则应检查以下问题的答案:docs