2017-04-21 14 views
2

私はログファイルをとり、その中の文字列とマッチし、別のカスタム文字列 "goal"を別のテキストファイルに保存する小さなpythonスクリプトを作成しています。次に、2番目のファイルからいくつかの値を取り出してリストに追加します。問題は、カスタム文字列の長さによっては(例えば "goalgoalgoal")、値のリストの長さが異なることです。現在、文字列 "goal"の一致が1031件あるログファイルを使用していますが、期待通りのコードが動作しない理由をPython v3の一貫性のない正規表現の一致が返される

for line in inputfile: 
    if "Started---" in line: 
     startTime = line[11:23] 
     testfile.write("\n"+"Start"+"\n"+"goal "+ startTime+"\n") 
     counterLines +=1 
    elif "done!" in line: 
     testfile.write("\n"+find_between(line, "| ", "done!")+"\n") 
    elif "Errors:" in line: 
     testfile.write("\n"+"Errors:"+line.split("Errors:",1)[1]+"\n") 
    elif "Warnings:" in line: 
     testfile.write("\n"+"Warnings:"+line.split("Warnings:",1)[1]+"\n") 
    elif "Successes:" in line: 
     testfile.write("\n"+"Successes:"+line.split("Successes:",1)[1]+"\n") 
    elif "END---" in line: 
     endTime = line[11:23] 
     testfile.write("\n"+"End"+"\n"+"endTime "+ endTime+"\n") 
    else: 
     print("nothing found") 

testfileread = open(filePath+"\\testFile.txt", "r") 

startTimesList = [] 
endTimesList = [] 

for line in testfileread: 
    matchObj = re.match(r'goal', line) 
    if matchObj: 
     startTimesList.append(line) 

print(len(startTimesList)) 

あなたはアイデアを持っていますか:リストの長さが〜980および1029

間のすべてのものから変わるここのコードはありますか?

ありがとうございます!

答えて

2

ほとんどの場合、書き込みが完了した後にtestFile.txtをフラッシュしないことが原因です。その結果、読み込みを開始するときに予測できない量のデータがファイルに書き込まれます。 testfile.flush()を呼び出すと問題が解決するはずです。あるいは、書き込みロジックをwithブロックにラップします。

+0

ありがとうございました!私はこのようなものを見逃すかもしれないと思ったが、何が分からないのか。 – dmtrshpv

関連する問題