python - 如何使用python在指定模式的子目录的特定级别中查找具有给定扩展名的文件?

标签 python

在 bash 中,可以使用 grep 轻松完成,如下所示:

grep "$pattern" $directory/*/*/*/level4/*.txt* > out/$pattern.txt

哪里$pattern是模式,$directory是基本目录,我们仅在第四级子目录中查找名为 level4 的 .txt 文件。 。并且可能将输出重定向到具有模式名称本身的文件。这在 bash 中完美运行。 Python 中有简单的等价物吗?

我尝试迭代 $directory 中的所有子目录使用for subdir, dirs, files in os.walk , endswith & find但这会查看所有文件,而不是具有指定名称的第四级文件。

最佳答案

像这样:

import glob
import re

pattern = 'directory_name/*/*/*/level4/*.txt*'
regex = re.compile(r'.*test.*')

for filename in glob.glob(pattern):
    with open(filename) as file_desc:
        for line_num, line in enumerate(file_desc):
            if not regex.match(line):
                continue
            output = '{}:{} {}'.format(filename, line_num, line)
            print(output, end='')

关于python - 如何使用python在指定模式的子目录的特定级别中查找具有给定扩展名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57712719/

相关文章:

python - 如何在 Django 中触发选择事件?

python - 在共享状态多处理中访问管理器对象

python - 按标题解析 CSV 文件

python - 使用 __getattr__ 实现装饰器设计模式

Python 异步 : how single thread can handle mutiple things simultaneously?

python - 使用 Pandas 按指定顺序写入 Excel 表格

python - VS 代码 : How to find all references of a variable in python?

python - 如何继续关闭子线程以关闭标准输入文件描述符?

python - 在没有迭代的情况下将字典批量存储在redis中

python - 从 bash 调用 python,如何更改 python 工作目录?