我有一个模拟某事的函数,并将结果数组写入文本文件.
例如,
def SimulationFunction(args):
#some simulation which results simOUT
f = open('results.txt','w')
f.write(str(simOUT) + '\n')
f.close()
Run Code Online (Sandbox Code Playgroud)
我想在不同的输入参数上运行该函数,并将输出保存到相同results.txt文件的新行.
例如,
for i in inputArgs:
SimulationFunction(i)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它时,生成的文本文件仅包含上次模拟运行的结果.
我在这里错过了什么?任何建议将不胜感激!
您必须附加到文件,而不是覆盖它.
根据Python Pocket Reference(Mark Lutz,O'rielly):
Mode是一个可选字符串,用于指定打开文件的模式.它默认
'r'为在文本模式下打开以进行读取.其他常见值'w'用于写入(如果文件已存在则截断文件)和'a'附加.
以下是open()的模式:( 根据教程点)
r- 打开文件以供阅读.文件指针位于文件的开头.这是默认模式.
rb- 打开文件以仅以二进制格式读取.文件指针位于文件的开头.这是默认模式.
r+- 打开文件进行读写.文件指针将位于文件的开头.
rb+- 以二进制格式打开文件进行读写.文件指针将位于文件的开头.
w- 打开文件仅供写入.如果文件存在,则覆盖文件.如果该文件不存在,则创建一个用于写入的新文件.
wb- 打开文件以仅以二进制格式写入.如果文件存在,则覆盖文件.如果该文件不存在,则创建一个用于写入的新文件.
w+- 打开文件进行书写和阅读.如果文件存在,则覆盖现有文件.如果该文件不存在,则创建一个用于读写的新文件.
wb+- 以二进制格式打开文件进行写入和读取.如果文件存在,则覆盖现有文件.如果该文件不存在,则创建一个用于读写的新文件.
a- 打开要追加的文件.如果文件存在,则文件指针位于文件的末尾.也就是说,文件处于追加模式.如果该文件不存在,则会创建一个用于写入的新文件.
ab- 打开文件以二进制格式附加.如果文件存在,则文件指针位于文件的末尾.也就是说,文件处于追加模式.如果该文件不存在,则会创建一个用于写入的新文件.
a+- 打开文件以进行追加和阅读.如果文件存在,则文件指针位于文件的末尾.该文件以追加模式打开.如果该文件不存在,则会创建一个用于读写的新文件.
ab+- 打开文件,以二进制格式附加和读取.如果文件存在,则文件指针位于文件的末尾.该文件以追加模式打开.如果该文件不存在,则会创建一个用于读写的新文件.
此外,'w'和'a'将创建一个文件,如果它不存在,而'r'会抛出类型的异常IOError.