正则表达式,glob,Python

Regular expression, glob, Python

我有一个文件夹,里面有很多文件。 有一组包含 pc_0.txt、pc_1.txt、...、pc_699.txt。 我想 select pc_200 - > 到 pc_699.txt

之间的所有文件

如何?

for filename in glob.glob("pc*.txt"):
    global_list.append(filename)

对于这种特定情况,glob 已经支持您的需要(参见 fnmatch docs for glob wildcards)。你可以这样做:

for filename in glob.glob("pc[23456]??.txt"):

如果您需要特别说明两个尾随字符是数字(某些文件可能在那里有非数字字符),您可以将 ? 替换为 [0123456789],否则,我发现 ? 不那么让人分心。

在更复杂的情况下,您可能不得不求助于正则表达式,您可以在此处使用:

import re

for filename in filter(re.compile(r'^pc_[2-6]\d\d\.txt$').match, os.listdir('.')):

但考虑到 glob 式通配符已经足够好了,您现在还不需要大刀阔斧。