正则表达式,glob,Python

时间:2016-12-09 03:13:57

标签: python glob

我有一个文件夹,包含很多文件。 有一个组包含pc_0.txt,pc_1.txt,...,pc_699.txt。 我想选择pc_200之间的所有文件 - >到pc_699.txt

如何?

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

1 个答案:

答案 0 :(得分:3)

对于这种特定情况,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('.')):

但鉴于全球式通配符运行良好,你还不需要打破大枪。