我是一个Python新手,但我遇到了一个奇怪的行为,我无法解释。基本上,我需要将python脚本输出转发到一个文件。
举个例子,我需要将python脚本的输出转发到一个文件中。
while True:
print('tick')
time.sleep(5)
然后将输出转发到文件中
python test.py >> test.log 2>&1
但问题是,在脚本完成之前,文件是空的,看起来它把输出写到某个缓冲区,最后才把这个缓冲区发送到文件中。
这对我来说是完全不能接受的,因为我有一个正在运行247的脚本,在这种情况下,我将永远不会得到适当的日志。我需要实时写入文件。
我知道可以用
with open('test.log', mode='a') as log_file:
但在这种情况下,我将失去在终端中查看结果的能力。此外,我将被严格限制在一个脚本中指定的文件中。
我想这实际上不是Python的问题,而是更通用的问题。不过,是否可以像在终端中看到的那样,对一个文件进行即时写入?
试试这个
with open('log.log', 'w+') as log_file:
print('tick', file=log_file)
这样一来,打印输出就会进入文件,而不是stdout。