首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pathlib中使用通配符

在Pathlib中使用通配符
EN

Stack Overflow用户
提问于 2019-11-30 01:29:40
回答 1查看 813关注 0票数 1

我对Python还是个新手。我正在尝试一种方法来解析一个巨大的报告文件夹中的一些文本文档,以搜索特定的文本字符串。我有了实际的解析和一切准备工作,但我遇到了目录搜索的问题。我正在搜索的这个文件夹有数千个文件,但它们都是按日期排序的。

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

代码语言:javascript
复制
path('C:/Reports/*/otherfolder/textdoc.txt)

但这看起来并不是很好。有没有什么好办法可以让我胡思乱想呢?我尽量不让代码太复杂,因为它会被非代码友好的人修改以搜索这些文档。下面是代码。理想情况下,报告和在线之间应该有一个日期,但同样,它需要通配符。

代码语言:javascript
复制
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))

编辑: Derp。通过简单地将Online//添加到glob参数,我自己解决了这个问题。

代码语言:javascript
复制
for filename in Path('C://Reports//').rglob('Online//EF_LDFLE_*.LIS')

它似乎起作用了。但是,有没有更好的办法呢?也许可以将起始月份添加到路径参数中,例如:C://Reports//2019-11-*

EN

回答 1

Stack Overflow用户

发布于 2019-11-30 02:01:45

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

Glob2做的正是我想要的,并允许我在搜索过程中的任何时候使用通配符,即:

代码语言:javascript
复制
for filename in glob2.glob('C://Reports//201911**//Online/EF_LDFLE_*.LIS')

返回我正在搜索的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59109010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档