在Python中使用glob匹配"一个或多个

5 投票
2 回答
3293 浏览
提问于 2025-04-17 05:48

我需要获取所有名字是数字的文本文件,比如: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)

撰写回答