我想创建包含许多Png文件的Gif文件。问题是Png文件的名称中包含日期,例如(name_2017100706_var.png)。日期开始为yymmddhh格式,开始于2017100706,结束于2017101712,以6个小时递增,因此下一个文件名将包含名称为2017100712的文件,我希望代码根据日期顺序遍历文件。所以我正在使用以下代码:
import os
import imageio
import datetime
png_dir = '/home/path/'
images = []
counter = 2017100706
while counter <= 2017101712:
for file_name in os.listdir(png_dir):
if file_name.startswith('name_'+str(counter)):
file_path = os.path.join(png_dir, file_name)
images.append(imageio.imread(file_path))
counter +=6
imageio.mimsave('/home/path/movie.gif', images, duration = 1)
答案 0 :(得分:0)
问题:如何循环使用名称中带有日期的文件
将class object
与以下内置函数结合使用的示例:
import os
import imageio
class SortedDateListdir():
def __init__(self, dpath):
# Save directory path for later use
self.dpath = dpath
listdir = []
# Filter from os.listdir only filename ending with '.png'
for fname in os.listdir(dpath):
if fname.lower().endswith('.png'):
listdir.append(fname)
# Sort the list 'listdir' according the date in the filename
self.listdir = sorted(listdir, key=lambda fname: fname.split('_')[1])
def __iter__(self):
# Loop the 'self.listdir' and yield the filepath
for fname in self.listdir:
yield os.path.join(self.dpath, fname)
if __name__ == "__main__":
png_dir = '/home/path'
movie = os.path.join(png_dir, 'movie.gif')
images = []
for fpath in SortedDateListdir(png_dir):
images.append(imageio.imread(fpath))
imageio.mimsave(movie, images, duration=1)
使用Python测试:3.4.2