我是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-*
?
进一步研究之后,我发现了Glob2。
Glob2完全满足我的要求,并允许我在搜索的任何位置使用通配符,即:
for filename in glob2.glob('C://Reports//201911**//Online/EF_LDFLE_*.LIS')
完全返回我要搜索的内容。