在Python中使用正则表达式匹配文件夹中的文件
我想用正则表达式来匹配一个文件夹里的所有文件,原因是某些需求:
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)]