【问题标题】:Using Wildcards in Pathlib在 Pathlib 中使用通配符
【发布时间】:2019-11-29 17:29:40
【问题描述】:

我对 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】:

    进一步挖掘后,我找到了 Glob2。

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

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

    准确返回我正在搜索的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 2012-03-22
      • 2011-08-01
      • 2016-05-10
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多