我将采用以下方法。您可以定义一个简单的文件过滤器工厂。
import timedef make_time_filter(start, end, time_format, file_format='index_{time_format:}.csv'): t_start = time.strptime(start, time_format) t_end = time.strptime(end, time_format) ft_fmt = file_format.format(time_format=time_format) def filt(fname): try: return t_start <= time.strptime(fname, ft_fmt) <= t_end except ValueError: return False return filt现在,您只需做一个谓词即可过滤出所需的日期范围
time_filt = make_time_filter('20091101', '20091201', '%Y%m%d')然后将此传递给
filter
filter(time_filt, os.listdir(your_dir))
或者说它是一种理解
(fname for fname in os.listdir(your_dir) if time_filt(fname))
正则表达式将更通用,但是您不需要这种正则表达式,因为您的文件名全部遵循简单的模式,您知道该模式必须包含日期。有关该
time模块的更多信息,请参阅docs。



