Python将函数输出写入文件

use*_*147 0 python

我有一个模拟某事的函数,并将结果数组写入文本文件.

例如,

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)

但是,当我尝试运行它时,生成的文本文件仅包含上次模拟运行的结果.

我在这里错过了什么?任何建议将不胜感激!

Cha*_*dis 6

您必须附加到文件,而不是覆盖它.

根据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.