2017-04-21 40 views
2

我正在寫一個小型python腳本,它需要一個日誌文件,匹配其中的字符串並將它們和另一個自定義字符串「目標」保存到另一個文本文件。然後我從第二個文件中取一些值並將它們添加到列表中。問題在於,根據自定義字符串的長度(例如「goalgoalgoal」),具有值的列表長度各不相同 - 目前,我正在處理包含1031個字符串「goal」匹配的日誌文件,但是列表的長度變化的一切和1029之間〜980Python 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)) 

你有想法,爲什麼預期的代碼不能正常工作?

預先感謝您!

回答

2

很可能是因爲在寫入完成後,您沒有刷新testFile.txt這一事實 - 因此,當您開始讀取文件時,文件中的數據量不可預知。調用testfile.flush()應該可以解決問題。或者,將寫入邏輯封裝在with塊中。

+0

謝謝!我想我可能會錯過這樣的事情,但不知道是什麼。 – dmtrshpv