このコードは、検索中のファイルに一致する文字列を出力します文字列が繰り返し存在する場合、巨大なリストで終わる)。私はリストと一致する文字列が何回一致するかを知りたいだけです。私はどの文字列が一致するかを知りたいので、True/Falseの解決法は機能しません。しかし、私はそれらが一致する場合、それぞれ一度だけリストされています。私はパターン= '|' .join(キーワード)の部分がやっていることを本当に理解していません - ファイルを一致させるために他の人のコードから取得しましたが、必要な場合はわかりません。あなたの助けに感謝します。Python:文字列が見つかった場合、その文字列の検索を停止し、次の文字列を検索して一致する文字列を出力します。
# declares the files used
filenames = ['//Katie/Users/kitka/Documents/appreport.txt', '//Dallin/Users/dallin/Documents/appreport.txt' ,
'//Aidan/Users/aidan/Documents/appreport.txt']
# parses each file
for filename in filenames:
# imports the necessary libraries
import os, time, re, smtplib
from stat import * # ST_SIZE etc
# finds the time the file was last modified and error checks
try:
st = os.stat(filename)
except IOError:
print("failed to get information about", filename)
else:
# creates a list of words to search for
keywords = ['LoL', 'javaw']
pattern = '|'.join(keywords)
# searches the file for the strings in the list, sorts them and returns results
results = []
with open(filename, 'r') as f:
for line in f:
matches = re.findall(pattern, line)
if matches:
results.append((line, len(matches)))
results = sorted(results)
# appends results to the archive file
with open("GameReport.txt", "a") as f:
for line in results:
f.write(filename + '\n')
f.write(time.asctime(time.localtime(st[ST_MTIME])) + '\n')
f.write(str(line)+ '\n')
キーワードが見つかったファイルを教えてください。ありがとうございます。これは私の元のコードよりもはるかに効率的で、動作するようです。私はもう少しテストをします。ありがとう! – Stefany