2

我使用 Python,并且有一个不同文件类型的文件名列表。文本文件可能如下所示:

01.txt
02.txt
03.txt
...

让我们假设文本文件都以这种方式编号。现在我想获取数字从 1 到 25 的所有文本文件。所以我想%02i.txt通过 GUI 提供一个格式字符串,以识别所有匹配的文件名。

到目前为止,我的解决方案是嵌套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²)。因此,在很长的列表上可能需要一段时间。有没有更聪明/pythonic的方式来做到这一点?

嗯,是的,我可以使用像 一样的正则表达式^\d{2}\.txt$,但是格式字符串%更容易输入。

4

2 回答 2

2

You can use a set:

fmt = '%02i.txt'
targets = {fmt % i for i in range(1, 25+1)}

then

for f in files:
    if f in targets:
        # do stuff
于 2013-03-17T02:13:02.423 回答
0

一种更 Pythonic 的方式来遍历文件是通过使用glob模块。

>>> import glob
>>> for f in glob.iglob('[0-9][0-9].txt'):
        print f


01.txt
02.txt
03.txt
于 2013-03-17T02:54:59.813 回答