Python:递归地使用正则表达式模式获取文件的路径名

标签 python regex python-3.x filepath

如果想要获取具有特定模式名称的所有文件的(绝对)文件路径(文件列表),如何在 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))

最佳答案

这是一个使用正则表达式的方法,但对于简单的情况,我会使用 in 运算符来使用 akash 的答案

import re
pattern = re.compile(r'.*pat\.txt$')

import fnmatch
import os 
start_path = "/home/me/" 
for root, dirs, files in os.walk(start_path):
    for filename in files:
        if pattern.find(filename):
            print(os.path.join(start_path, filename))

关于Python:递归地使用正则表达式模式获取文件的路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43511690/

相关文章:

jquery - 正则表达式:忽略括号和圆括号之间

Python:减少(字符串列表)-> 字符串

python 3 : Move email to trash by uid (imaplib)

python - 基本 gRPC 版本不工作

python - 提及解析正则表达式

python - 基本计算器只会添加值

python - 调用计数不适用于异步函数

python - 将所有对象中的一个 QuerySet 元素从 int 转换为 Decimal

c# - 按长度拆分字符串

java - 有没有办法在正则表达式(java)中使用\p{Punct},但没有 "(",")"字符?