您open()
通話使用"a"
(追加)模式等建議將解決您的眼前問題,但你不必擔心如何清除出該文件每次運行或創建它,如果它不存在,等等。您可以使用"w"
模式作爲第一個功能,使用"a"
作爲後續模式,但這會引入必須以正確順序調用它們的情況。當你需要它們的順序不同時,可能會在六個月內再次咬你,並且必須追查爲什麼只有其中一些出現在文件中(因爲具有「w」作爲模式的那個現在在中間)。
更好的方法是打開文件外功能,在把它作爲一個參數(可能使用周圍的功能with
語句調用所以它就會自動關閉後)。這不僅避免了需要擔心你的每一個功能模式,它避免了重複打開和關閉的文件,這是一個低效率的(雖然在現代系統中較小者):
def SimulationFunction1(args, outfile):
# some simulation, which results in simOUT
outfile.write(str(simOUT) + '\n')
with open("my_output_file.txt", "w") as out:
SimulationFunction1(args, outfile=out)
SimulationFunction2(args, outfile=out)
SimulationFunction3(args, outfile=out)
或者更好的,只是有功能回結果,並具有來電處理它們寫:
def SimulationFunction1(args):
# some simulation, which results in simOUT
return str(simOUT)
with open("my_output_file.txt", "w") as out:
out.write(SimulationFunction1(args) + `\n`)
out.write(SimulationFunction2(args) + `\n`)
out.write(SimulationFunction3(args) + `\n`)
後一種方法說明separation of concerns。你的代碼的每個部分都應該關心做一件事:計算一個值,寫入一個文件或者其他東西。在單個「塊」代碼(函數,類,等等)中執行多項操作會使得難以理解,維護和重用。
有一個地方,我可以有(事實上,可能應該有)在那裏分開的擔憂,並沒有......你能看到它嗎? :-)
謝謝!!!!!!!!! – user32147 2015-02-06 05:30:35