我会采取以下方法.您可以定义一个简单的文件筛选器工厂.
import time
def 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(time_filt, os.listdir(your_dir))
或者说它是某种理解
(fname for fname in os.listdir(your_dir) if time_filt(fname))
正则表达式会更通用,但你不需要一个正则表达式,因为你的文件名都遵循一个你知道必须包含日期的简单模式.有关时间模块的更多信息,请参阅docs.