【问题标题】:Redirect log to file before process finished [duplicate]在进程完成之前将日志重定向到文件[重复]
【发布时间】:2016-10-16 01:29:03
【问题描述】:

test.py(工作):

import time

_, a, b = [1, 2, 3]
print a
print b

运行代码:python test.py > test.log

您将在 test.log 中获得日志

test.py(不工作):

import time

_, a, b = [1, 2, 3]
print a
print b

while True:
    time.sleep(5)

但是这个你在日志中没有。

如何在程序完成之前获取日志,没有 python 日志模块(只使用重定向'>')?

【问题讨论】:

  • 查找“刷新输出”。我将您的问题标记为与另一个问题重复。虽然它说的是“屏幕”而不是文件,但从您的程序的角度来看,它实际上是一回事。
  • import sys; sys.stdout.flush()
  • 第五个答案适用于文件,但在该问题中不被接受。

标签: python


【解决方案1】:

默认情况下,Python 缓冲区 stdout,因此日志以块的形式写入磁盘。您可以通过几种不同的方式关闭缓冲,这里有两种。调用脚本时可以使用-u选项,即:

python -u test.py

你可以使用环境变量PYTHONUNBUFFERED:

export PYTHONUNBUFFERED=true
python test.py

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 2015-01-01
    • 2014-07-14
    • 2020-10-14
    • 2011-01-31
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多