在 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/