我从多个文本文件中找到一个字符串,例如“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='')
答案 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()