2012-06-02 36 views
1

好吧,這麼基本的python問題。我有一個簡單的腳本來替換html(txt)文件上的文本。我寫了一些代碼,並放入了一些換行符的html代碼,我想替換爲xhtml代碼,所以我試圖編寫一個python腳本來用常規的換行符html代替xhtml編碼版本。 有時,當我運行代碼時,它可以正常工作,但有時會重寫該文件,最後兩個字符在換行符後重復。如果有問題,我在OS X Lion上運行2.7。下面的代碼:python文件輸入 - 輸出最後三個字符

import sys 
import re 

def replace_text(filename): 
    with open(filename, 'r+') as f: 
     p = re.compile('(</br>|<br/>|<br />)') 
    f_data = open(filename, 'r+').read() 
    f.write(p.sub('<br>', f_data)) 
    f.close() 

def main(): 
args = sys.argv[1:] 

if not args: 
    print 'usage: [--summaryfile] file [file ...]' 
    sys.exit(1) 

summary = False 

if args[0] == '--summaryfile': 
    summary = Trye 
    del args[0] 

for filename in args: 
    replace_text(filename) 

if __name__ == '__main__': 
main() 

所以,當我與文件運行它(說 'foo.txt的'),具有內容:

</br> <br/> <br /> <br> poop 

有時它輸出:

<br> <br> <br> <br> poop 

有時會輸出:

<br> <br> <br> <br> poop 
op 

呵呵?使用OS X Lion與python 2.7。我錯過了簡單的事情?還使用Gedit 3.2.6作爲編輯器。任何幫助?

回答

1

您正在縮短文件的內容,但您並未縮短其長度。不要忘記在關閉前通過.truncate()

+0

巨大的成功。非常感謝!另外,請原諒我的縮進錯誤,代碼是正確的,但是我通過Win7虛擬化了OS X Lion,並且它運行得並不完美,所以我無法通過鍵盤命令並將代碼複製到表單中。我也是新的(顯然是從我的名聲)到stackoverflow。但你抓住我愚蠢的錯誤真棒。謝謝。 – jonc