如何循环使用名称中带有日期的文件

时间:2019-01-24 16:45:08

标签: python loops date-format

我想创建包含许多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)

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