Python Glob regex文件搜索,从多个匹配项中搜索单个结果

2024-09-30 06:12:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我试图在一个目录中找到一个特定的文件,比如说,'file3.txt'。目录中的其他文件是“flie1.txt”、“File2.txt”、“file_12.txt”和“File13.txt”。号码是唯一的,所以我需要按用户提供的号码进行搜索。在

file_num = 3
my_file = glob.glob('C:/Path_to_dir/' + r'[a-zA-Z_]*' + f'{file_num} + '.txt')

问题是,它同时返回“file3.txt”和“File13.txt”。如果我试着向后看,我没有文件:

^{pr2}$

怎么才能得到文件?在


Tags: 文件topath用户目录txtmynum
2条回答

glob接受Unix通配符,而不是regex。这些都不那么强大,但你所要求的仍然可以实现。这个:

glob.glob("/path/to/file/*[!0-9]3.txt")

过滤包含前面没有数字的3的文件。在

对于其他情况,可以使用列表理解和正则表达式:

^{pr2}$

glob的问题是它的正则表达式有限。例如,不能将“[a-z\]+”与glob一起使用。在

因此,最好编写自己的正则表达式,如下所示:

import re
import os

file_num = 3
file_re = r"[a-z_]+{file_num}\.txt".format(file_num=file_num)
match_file = re.compile(file_re, flags=re.IGNORECASE).match

work_dir = "C:/Path_to_dir/"
names = list(filter(match_file, os.listdir(work_dir)))

相关问题 更多 >

    热门问题