import timeit
s="""from random import choice
import re
names = ('WAKA', 'waka', 'waka-waka', 'wattafak')
dates = ('2018-12-01', '2018-01-01', '2019-01-01', '2019-02-03')
filenames = (
choice(names) + '_' + choice(dates) + '.txt'
for _ in range(1000000)
)
def check_filenames_regex(filenames):
REGEX = re.compile(r'.*_(?P<year>\d{4})-\d\d-\d\d\..+')
result = []
for f in filenames:
r = REGEX.match(f)
if r:
year = r.group('year')
if int(year) >= 2019:
result.append(f)
return result
"""
timeit.timeit('check_filenames_regex(filenames)', setup=s)
我认为时间在这里不是问题。我用100万个假文件名构建了一个工作流,它对我来说工作了2.5秒(我有一台普通的电脑)。此外,我使用正则表达式来提取年份,所以如果您想要更简单的解决方案,它会更快
退货:
2.742631300352514
如果文件夹中的文件少于几千万个,那么简单的暴力解决方案应该不是问题
相关问题 更多 >
编程相关推荐