您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