2014-06-16 113 views
0

此腳本讀取和寫入目錄中的所有單個html文件。該腳本重申,突出顯示並編寫輸出。問題是,在突出顯示搜索項的最後一個實例之後,腳本將刪除每個文件輸出中最後一個搜索實例之後的所有剩餘內容。這裏的任何幫助表示讚賞。Python:嘗試讀取和寫入多個文件時發出

import os 
import sys 
import re 

source = raw_input("Enter the source files path:") 

listfiles = os.listdir(source) 

for f in listfiles: 
    filepath = os.path.join(source+'\\'+f) 
    infile = open(filepath, 'r+') 
    source_content = infile.read() 

    color = ('red') 
    regex = re.compile(r"(\b in \b)|(\b be \b)|(\b by \b)|(\b user \b)|(\bmay\b)|(\bmight\b)|(\bwill\b)|(\b's\b)|(\bdon't\b)|(\bdoesn't\b)|(\bwon't\b)|(\bsupport\b)|(\bcan't\b)|(\bkill\b)|(\betc\b)|(\b NA \b)|(\bfollow\b)|(\bhang\b)|(\bbelow\b)", re.I) 

    i = 0; output = "" 
    for m in regex.finditer(source_content): 
     output += "".join([source_content[i:m.start()], 
          "<strong><span style='color:%s'>" % color[0:], 
          source_content[m.start():m.end()], 
          "</span></strong>"]) 

     i = m.end() 
    outfile = open(filepath, 'w') 
    outfile.seek(0, 2) 
    outfile.write(output) 
    print "\nProcess Completed!\n" 
    infile.close() 
    outfile.close() 


raw_input() 

回答

2

你的for循環結束後,你需要包括無論是在最後一場比賽後離開:

 ... 
     i = m.end() 
    output += source_content[i:]) # Here's the end of your file 
    outfile = open(filepath, 'w') 
    ... 
+0

是的,我錯過了。 非常感謝。 –

+0

不客氣。如果這解決了您的問題,請考慮將此答案標記爲「已接受」,以便將來的用戶可以看到它對您有用。 – Brionius