我正在寻找找到包含模式myfile_[SomeNumber].txt
我天真的尝试是
glob.glob("myfile_[0-9]*.txt")
但这也会找到myfile_[SomeNumber][AnyStuff].txt
这个答案显示了如何以固定的长度进行操作,但这不是我想要的。 use python glob to find a folder that is a 14 digit number
答案 0 :(得分:5)
您可能会将正则表达式语法与glob构造混淆。 globbing中的[0-9]*
表示“单个数字后跟零个或多个任何字符”。请放弃*
。
在扩展的globbing 中有一个“一个或多个”限定符,但glob
不支持,所以除了使用正则表达式之外别无选择,即你自己的文件名模式匹配。有几种方法可以做到这一点,这里有一个:
import os
import re
files = []
for fname in os.listdir('.'):
if re.match(r"myfile_[0-9]+.txt", fname):
files.append(fname)
print files
请注意,RE与您的RE不完全相同,我使用+
表示“前面一个模式中的一个”,*
表示“零或更多” - 所以数字是可选的,这可能是你想要的(我不确定)。
大部分代码可以作为列表理解来完成,但这可能会失去一些可读性:
files = [fname for fname in os.listdir('.')
if re.match(r"myfile_[0-9]+.txt", fname)]