将stdout重定向到文件时,Python脚本不输出任何输出

时间:2018-07-05 20:25:42

标签: python-3.x bash raspberry-pi3

我在树莓派上启动时运行了一个python脚本(运行良好),我想将输出附加到现有的文本文件中。 我在/etc/rc.local文件中获得了此代码(我使用cron尝试了相同的操作,但是由于某种原因它甚至没有启动脚本)。

python3 /home/pi/script.py >> /home/pi/log.txt 

不幸的是,无论我如何尝试,日志文件始终为空,除非我直接运行同一命令并通过按ctrl + c(而不是ctrl + z)中止脚本。似乎该脚本必须先以正确的方式关闭,然后才能将任何内容写入文件,但我希望它逐步将文件的每一个输出保存起来。

编辑:我解决了。显然,仅在填充了一定数量的内存或脚本完成后才写入文件是正常的(这对我而言从来没有,因为我总是在可能发生之前重新启动pi)。添加-u标志可立即写入文件。

python3 -u /home/pi/script.py >> /home/pi/log.txt 

1 个答案:

答案 0 :(得分:1)

如果您使用print输出文本,则其参数flush可能会帮助您:

print('Hello, World', flush=True)

否则:

import sys
sys.stdout.write('Hello, world\n')
sys.stdout.flush()

将具有相同的效果。