2014-04-29 72 views
0

我是新來的Python和我在努力理解爲什麼這個節目腳本搜索和替換字符串在flie

#!/usr/bin/env python 
infile = open('/usr/src/scripts/in_file.conf') 
outfile = open('/usr/src/scripts/in_file.conf', 'w') 

replacements = {'abcd':'ABCD', '1234':'bob'} 

for line in infile: 
    for src, target in replacements.items(): 
     line = line.replace(src, target) 
    outfile.write(line) 
infile.close() 
outfile.close() 

導致出現一個空白文件腳本執行之後。

原來in_file.conf是:

testfile of junk 

abcd 
****************** 

1234 

************* 

糾正我,如果我錯了,但我的理解是腳本打開in_file.conf和內容加載到內存中的兩個臨時文件,infile & outfile。字典類型變量replacements就像一個數組來保存「查找」和「替換」字符串。

它循環在每個線然後嵌套循環下降線並加載變量src和目標與替換變量的內容(如陣列);然後寫入該行,直到寫入所有行。

難道我的路要走在我的理解?

的in_file.conf是在同一目錄中的腳本,可能只是沒有找到in_file.conf,寫一個空白文件?

我告訴你,我是新來的蟒蛇。

親切的問候,

Reggie。

回答

1

的問題是,你在讀模式打開同一個文件,然後在寫模式(這截斷文件)。理想情況下,您應該有一個不同的輸出文件,但如果需要將輸出放在同一個文件中,則可以刪除舊文件,然後重命名新文件。

1

請使用不同的文件INFILE和OUTFILE。以寫入模式打開文件將刪除其內容。因爲你INFILE和OUTFILE是相同的文件,文件的內容將被刪除,你的循環永遠不會運行