Python将函数输出写入文件

新手上路,请多包涵

我有一个模拟某些东西并将结果数组写入文本文件的函数。

例如,

 def SimulationFunction(args):
    #some simulation which results simOUT
    f = open('results.txt','w')
    f.write(str(simOUT) + '\n')
    f.close()

我想在不同的输入参数上运行该函数,并将输出保存到同一 results.txt 文件的新行中。

例如,

 for i in inputArgs:
    SimulationFunction(i)

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

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

原文由 user32147 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 690
2 个回答

您必须 append 归档, 而不是 write 归档。

这是修复:

  f = open('results.txt','a')

'w' 表示您正在写入文件(覆盖)

'a' 表示您要附加到文件

如果您想了解更多有关打开文件的不同模式的信息,请访问: http ://www.tutorialspoint.com/python/python_files_io.htm

原文由 taesu 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

根据 Python Pocket Reference (Mark Lutz,O’rielly):

Mode 是一个可选字符串,它指定文件打开的模式。它默认为 'r' 表示以文本模式打开阅读。其他常用值是 'w' 用于写入(如果文件已存在则截断该文件)和 'a' 用于附加。

以下是 open() 的模式:( _根据 Tutorials Point )_

r - 以只读方式打开文件。文件指针位于文件的开头。这是默认模式。

rb - 打开一个只读二进制格式的文件。文件指针位于文件的开头。这是默认模式。

r+ - 打开文件进行读写。文件指针将位于文件的开头。

rb+ - 以二进制格式打开文件进行读写。文件指针将位于文件的开头。

w - 打开一个只写文件。如果文件存在则覆盖该文件。如果该文件不存在,则创建一个新文件用于写入。

wb - 打开一个仅以二进制格式写入的文件。如果文件存在则覆盖该文件。如果该文件不存在,则创建一个新文件用于写入。

w+ - 打开文件进行写入和读取。如果文件存在,则覆盖现有文件。如果该文件不存在,则创建一个新文件用于读写。

wb+ - 打开一个文件以二进制格式写入和读取。如果文件存在,则覆盖现有文件。如果该文件不存在,则创建一个新文件用于读写。

a - 打开文件进行追加。如果文件存在,文件指针位于文件末尾。即文件处于追加模式。如果该文件不存在,它会创建一个新文件用于写入。

ab - 以二进制格式打开文件进行追加。如果文件存在,文件指针位于文件末尾。即文件处于追加模式。如果该文件不存在,它会创建一个新文件用于写入。

a+ - 打开文件进行追加和读取。如果文件存在,文件指针位于文件末尾。该文件以追加模式打开。如果该文件不存在,它会创建一个新文件用于读写。

ab+ - 打开一个文件,以二进制格式追加和读取。如果文件存在,文件指针位于文件末尾。该文件以追加模式打开。如果该文件不存在,它会创建一个新文件用于读写。

Also, 'w' and 'a' will create a file if it does not exist, while 'r' will throw an exception of type IOError .

原文由 Charles D Pantoga 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题