我使用Python,并且有一个不同文件类型的文件名列表。文本文件可能如下所示:
01.txt
02.txt
03.txt
...
我们假设文本文件都以这种方式编号。现在我想得到所有文本文件,其编号范围从1到25.所以我想通过GUI提供类似%02i.txt
的格式字符串,以便识别所有匹配的文件名。
到目前为止,我的解决方案是嵌套的for
循环。外部循环遍历整个列表,内部循环对于每个文件计数从1到25:
fmt = '%02i.txt'
for f in files:
for i in range(1, 25+1):
if f == fmt % i:
# do stuff
这个嵌套循环看起来不太漂亮,复杂度是 O(n²)。所以在很长的名单上可能需要一段时间。 有更聪明/更智能的方法吗?
嗯,是的,我可以使用像^\d{2}\.txt$
这样的正则表达式,但使用%
的格式字符串更容易输入。
答案 0 :(得分:2)
您可以使用一套:
fmt = '%02i.txt'
targets = {fmt % i for i in range(1, 25+1)}
然后
for f in files:
if f in targets:
# do stuff
答案 1 :(得分:0)
迭代文件的更加pythonic的方法是使用glob
模块。
>>> import glob
>>> for f in glob.iglob('[0-9][0-9].txt'):
print f
01.txt
02.txt
03.txt