在Python中使用glob匹配"一个或多个
我需要获取所有名字是数字的文本文件,比如:1.txt, 2.txt, 13.txt
请问可以用glob
来实现吗?
import glob
for file in glob.glob('[0-9].txt'):
print(file)
这样做的话,13.txt
不会被返回。
而且好像没有正则表达式中表示一个或多个的+
这个操作符。
我该怎么办呢?
2 个回答
3
来自 TFM 的内容:
这里不会进行波浪号扩展,但 *、? 和用 [] 表示的字符范围会被正确匹配。
所以,不,这里没有像正则表达式中的 +
操作符。你可以先用 glob
来做初步筛选(比如 glob('*.txt')
),然后再用 regex
进一步过滤。
2
我觉得 glob()
这个函数并不是为了让你随意定制的。你可以试试 os.listdir()
这个函数,它可能更适合你的需求:
import os,re
for f in os.listdir("/path/to/dir"):
if re.match(r"^\d+\.txt$", f):
print(f)