【发布时间】:2017-04-20 06:21:45
【问题描述】:
如果想要获取具有特定模式名称的所有文件的(绝对)文件路径(文件列表),如何在 Python(unix 上的 v 3.5)中完成。类似于 bash 命令find -regex 'pattern' 的东西。我一直在寻找os、glob、os.path 和这个SO,但无法将它们放在一起。
假设您想要匹配 /.*[pat.txt]$/ 的文件的绝对路径,并且您有以下目录:
/home/me/dir1/dir1a/filepat.txt #1
/home/me/dir1/dir1a/file.txt
/home/me/dir1/dir1a/filepat.png
/home/me/dir2/filepat.txt #2
/home/me/dir3/dir3a/dir3ab/filepat
/home/me/dir3/dir3a/dir3ac/filepat.txt #3
/home/me/dir3/dir3a/dir3ac/filepat.png
然后你会想要三个指示的路径:
/home/me/dir1/dir1a/filepat.txt
/home/me/dir2/filepat.txt
/home/me/dir3/dir3a/dir3ac/filepat.txt
一次尝试是:
import fnmatch
import os
start_path = "/home/me/"
for root, dirs, files in os.walk(start_path):
for filename in fnmatch.filter(files, ".*pat.txt"):
print(os.path.join(start_path, filename))
【问题讨论】:
-
Python 在帖子标题中拼写错误:-)
-
尴尬 - 但很好
-
别担心,我处于“调试模式”;-)
标签: python regex python-3.x filepath