在Python中使用正则表达式匹配文件夹中的文件

3 投票
3 回答
6678 浏览
提问于 2025-04-17 12:03

我想用正则表达式来匹配一个文件夹里的所有文件,原因是某些需求:

re.compile(r'\.*$')

但是这样做也匹配到了隐藏文件和临时文件。有没有更好的方法呢?

3 个回答

1

只需使用这个,就可以获取一个文件夹中的所有文件:

import os
files = [f for p, d, f in os.walk('/foo/bar')][0]
2

试试用 re.compile(r'\w+\.*\w*') 来匹配可能带有点扩展名的字母数字文件名。

\w+ 可以匹配一个或多个字母数字的文件名,也就是 [a-zA-Z0-9_] 这些字符。

\.* 可以匹配零个或多个 '.' 这个字符。

\w* 可以匹配零个或多个字母数字的扩展名字符。

Kodos 是一个很棒的 Python 正则表达式开发和调试工具。

4

这段话的意思是,假设你是想对这些文件名做点什么。正如评论里有人提到的,你应该使用 glob 这个工具。因为我不太清楚你想对“临时”文件做什么,所以这就是最简单的方法了。这个方法不会返回任何隐藏文件。这里的“文件”是指你当前工作目录下的文件路径列表。

import os, glob
files = [f for f in glob.glob('./*') if os.path.isfile(f)]

撰写回答