【问题标题】:glob pattern PYTHON - check if pattern matches to given pathsglob 模式 PYTHON - 检查模式是否与给定路径匹配
【发布时间】:2021-05-20 07:17:36
【问题描述】:

大家好,我有一个 Json 中包含 glob 模式的列表:

{
    "Project/*",
    "Sales",
    "Test"
}

我在名为 log_paths 的数组中保存为字符串的路径,它们看起来像这样:

[
    "Project/component_x/doc/doc.rst",
    "Project/component_y/doc/doc.rst",
    "Project/component_z/doc/doc.rst",
    "Sales/doc/doc.rst",
    "Sales/doc/architecture.pml",
    "Test/test_cases/test.py",
    "Test/test2020/test2020.py",
]

我想检查我的 glob 模式是否与我的路径匹配。

如果匹配,我只想像在 json 中一样保存开头,而是 * 我也想要路径的一部分。

只保存:

Project/component_x
Project/component_y
Project/component_z

Sales
Sales

Test
Test

这可能吗?

【问题讨论】:

    标签: python python-3.x glob


    【解决方案1】:
    import glob
    for name in glob.glob('Project/*'):
        print name
    
    for a in glob.glob('Sales'):
        print 'Sales'
    
    for b in glob.glob('Test'):
        print 'Test'
    

    编辑:在 log_paths 中列出

    import glob
    for pat in log_paths:
        for x in glob.glob(pat):
            print x
    

    对于任何更花哨的东西,我建议您学习如何使用re 正则表达式来提取您真正想要的文件路径部分。 glob 不是为此而设计的

    【讨论】:

    • 应该补充一点 Project/* glob 只会返回第一个子目录而不递归,所以它已经匹配你想要的
    • 我可以在不写 glob.glob('Project/*) 的情况下这样做吗?因为它应该是通用的,它总是可以改变的。我考虑过遍历json。我的路径保存在变量“log_path”中,我将编辑问题的一部分
    • 我有一个问题,我现在在哪里寻找比赛?在我的工作区?我不想查看此 log_paths 并查看是否有任何匹配项
    • 如果您的 log_paths 数组包含相对路径,则它从执行脚本的位置开始。您可以在日志目录路径前面加上绝对路径
    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 2018-04-03
    • 2022-01-18
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多