从同一目录中的多个文本文件中查找特定字符串

时间:2017-03-30 12:23:08

标签: python-3.x

我从多个文本文件中找到一个字符串,例如“error”。多个文本文件位于类似的目录中。找到后,它必须能够打印包含该字符串的那一行。

到目前为止,我只是成功地从一个文本文件中搜索并打印出字符串。

在下面的代码中,我尝试在目录中创建一个文件名列表;该列表名为logz,但它没有打印出来。它仅在第10行中的logz列为TXT文件时才有效。

所需的输出应该是这样的:

  

第0行:asdasda错误wefrewfawvewvaw

     

第3行:awvawvawvaw错误afvavavav

     

第6行:e ERROR DSCVSVWASEFVEWVWEVW

这是我的代码:

import re
import sys
import os

logz = [fn for fn in os.listdir(r'my text file directory') if fn.endswith('.txt')]

err_occur = [] # The list where we will store results.
pattern = re.compile(" error ", re.IGNORECASE)


try: # Try to:
    with open ('logz', 'rt') as in_file: # open file for reading text.
        for linenum, line in enumerate(in_file): 
            if pattern.search(line) != None: 
                err_occur.append((linenum, line.rstrip('/n'))) 
                print("Line ", linenum, ": ", line, sep='')

1 个答案:

答案 0 :(得分:0)

您可以使用以下程序作为编写您的程序的示例。将第5行中的'.'替换为文本文件目录的路径。可以根据需要修改第9行以搜索'error'以外的单词。如果要使用f''字符串(第10行),则需要运行Python 3.6。

import pathlib


def main():
    for path in pathlib.Path('.').iterdir():
        if path.suffix.lower() == '.txt':
            with path.open() as file:
                for line, text in enumerate(file):
                    if 'error' in text.lower():
                        print(f'Line {line}: {text}')


if __name__ == '__main__':
    main()