【问题标题】:Printing to file python script running as a background process打印到作为后台进程运行的文件 python 脚本
【发布时间】:2018-12-09 11:17:17
【问题描述】:

我有一个 python 脚本,运行大约需要 3 个小时。我想将它生成的一些数据打印到 .csv 文件中。

我在 centos 上运行我的脚本,如下所示:

python my_script.py > output.csv &

我也试过了:

python my_script.py &> output.csv 

没有任何内容打印到 output.csv,甚至脚本开头的一些测试语句也没有。

接下来我尝试在我的脚本中打开一个文件 - f = open('output.csv', 'a') 并使用 f.write() 写入它。同样,文件中没有显示任何内容(尽管它确实被创建了)。

如何使用我想要的数据创建我的 output.csv?当它不是后台进程时,它似乎可以正常工作,但我希望它在后台运行。

我就是这样打印的:

print('hello, this is a test')

在另一个版本中,我有这样的东西:

f = open('output.csv', 'a')
f.write('hello, this is a test')

在这两种情况下我得到完全相同的结果。该文件被创建,但实际上没有写入任何内容。

感谢任何帮助。谢谢!

【问题讨论】:

  • 我们需要了解您的打印方式才能提供帮助。你能用小脚本重现问题并在这里发布吗
  • @Krishna,当然,我会编辑以上内容

标签: python io background centos


【解决方案1】:

尝试刷新标准输出缓冲区:

Python >= 3.3:

print('hello, this is a test', flush=True)

早期版本:

import sys

print('hello, this is a test')
sys.stdout.flush()

【讨论】:

  • 我很困惑为什么我的 python 程序没有打印出来,哦,是的,“刷新”魔法
猜你喜欢
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多