python-3.x - 当 stdout 重定向到文件时,Python 脚本不写入任何输出

标签 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 

最佳答案

如果您使用 print要输出文本,它的参数 flush 可能对您有帮助:

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

否则:

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

会有同样的效果。

关于python-3.x - 当 stdout 重定向到文件时,Python 脚本不写入任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199339/

相关文章:

python - 是否可以调用需要参数的函数,而无需该参数?在python上

bash - 如何在 Bash 中获取带有标志的参数

bash - 获取在shell脚本中运行的docker容器的名称

python-3.x - Raspberry Pi3 上的 Tensorflow 1.5

python - 属性错误 : module 'pandas' has no attribute 'Dataframe' with rapsberry Pi

python - BeautifulSoup - 寻找标志

python-3.x - pydantic 初始化 numpy ndarray

python - 使用 docx.Document() 时的回溯(最近一次调用最后一次)

bash - AWK 将 NULL 列值替换为前一行的列值(续)

python : cant open file 'hw.py' : [Errno 2] No such file or directory