Python3-txt中的类和模拟输出。文件

时间:2018-07-06 12:45:53

标签: python file class simulation fileoutputstream

我是使用Python3的新手,无法弄清楚如何将输出保存到文件中。从其他讨论中我知道您可以做到:

f = open(filename, 'w') 
print('whatever', file = f)

但是在我的情况下,我要保存的输出未写入“打印”中。如您在下面看到的,我在另一个文件中调用“ TruieGest”类来为我的不同动物(sows ['ID'])运行模拟:

def simulation():
  for sows['ID'] in sows['ID']:
    SowGest = TruieGest(sows['ID'], sows['Age'], sows['Portee'])
    SowGest.data_lactation()
    return simulation

simulation()
sorties.close()

关于如何在文件中获取输出的任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

您应该使用f.writeline()f.write()

关于这条线

TruieGest(sows['ID'], sows['Age'], sows['Portee'])

我相信最简单的方法是将其转换为String,但也许上面的方法可以处理字典或列表。

(对不起,暂时无法检查)

答案 1 :(得分:0)

假设您使用的是交互式Python提示符,并且使用的是模块,您不能完全控制/重写将其结果直接输出到屏幕上的情况。

如果您要做的是将其中一些输出保存到文件中(也许您希望以交互方式查看结果并在将结果提交到文件之前摆弄一些参数),可以执行以下操作

15:14 boffi@debian:~ $ python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> def f(): print('Hi Charlotte!')
>>> f()
Hi Charlotte!
>>> with open('a_file.txt', 'w') as sys.stdout:
...     f()

如您所见(如果您尝试使用我的代码...),第二个函数调用不会打印任何内容,我们可以从外壳中看到a_file.txt的内容

15:16 boffi@debian:~ $ cat a_file.txt 
Hi Charlotte!

我想这就是您所需要的。

如果您想知道它是如何工作的...首先,您是import sys,它是与系统交互的标准库模块,并且当您要提交方法输出时,可以临时 (使用with语句)将标准输出流(sys.stdout)分配给文件对象。缩进的with块中的所有语句(技术上是 context manager )将不会打印到终端,而是打印到文件。另一个好处是,当您确定代码 1。 时,文件会自动关闭,而 2。 会自动关闭{{1 }}与终端重新连接。

PS如果您想将输出的不同部分附加到同一文件,则可以。阅读print函数,该函数能够以追加模式重新打开现有文件。