2016-05-09 132 views
2

所有,創建輸入文件,並在蟒蛇

我寫了一個小的Python程序來創建其用作輸入文件來運行名爲srce3d外部程序文件運行外部程序。這裏是:

fin = open('eff.pwr.template','r') 
    fout = open('eff.pwr','wr') 
    for line in fin: 
     if 'li' in line: 
     fout.write(line.replace('-2.000000E+00', `-15.0`)) 
     else: 
     fout.write(line) 
    fin.close 
    fout.close  
    os.chmod('eff.pwr',0744) 
# call srce3d 
    os.system("srce3d -bat -pwr eff.pwr >& junk.out") 

這是行不通的。輸入文件被正確寫入,但srce3d在讀取期間抱怨文件結束。 os.system命令適用於預先存在的文件,無需打開該文件。

感謝您的幫助

回答

1

你實際上並沒有關閉文件 - 你必須呼叫file.close。所以,

fin.close 
fout.close 

應該

fin.close() 
fout.close() 
4

首先你缺少了親密的函數調用。

fin.close() ## the round braces() were missing. 
fout.close() 

更好的方法是使用上下文。

with open('eff.pwr.template','r') as fin, open('eff.pwr','wr') as fout: 
     ## do all processing here