在Pathlib中使用通配符

问题描述 投票:0回答:1

我是Python的新手。我正在使用一种方法来解析巨型报表文件夹中的一些文本文档,以搜索特定的文本字符串。我有实际的解析,一切都很好,但目录搜索遇到了问题。我要搜索的该文件夹有数千个文件,但它们都是按日期排序的。

例如:(/Reports/2019-11-29/otherfolder/actualtextdoc.txt)此文件夹可以追溯多年,每天的文件夹中大约有50个文件夹。所以我希望基本上使用:

path('C:/Reports/*/otherfolder/textdoc.txt)

但是那看起来似乎不太好。有什么好方法可以让我放屁吗?我试图避免使代码过于复杂,因为非代码友好人员会对其进行修改以搜索这些文档。下面是代码。理想情况下,在“报告”和“在线”之间应该有一个日期,但是再次需要将其通配。

import mmap
from pathlib import Path

for filename in Path('C://Reports//Online//').rglob('EF_LDFLE_*.LIS'):
    with open(filename) as f:
        s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
        if s.find(b'213875') != -1:
            print('Text found in file: ' + str(filename))

编辑:德普只需将Online//添加到glob参数即可自己解决该问题。

for filename in Path('C://Reports//').rglob('Online//EF_LDFLE_*.LIS')

似乎有效。但是,还有更好的方法吗?也许可以在Path参数中添加开始月份,例如:C://Reports//2019-11-*

python directory wildcard pathlib
1个回答
0
投票

进一步研究之后,我发现了Glob2。

Glob2完全满足我的要求,并允许我在搜索的任何位置使用通配符,即:

for filename in glob2.glob('C://Reports//201911**//Online/EF_LDFLE_*.LIS')

完全返回我要搜索的内容。

© www.soinside.com 2019 - 2024. All rights reserved.