python - sys.stdout.flush() 无法与 python 和 electronjs 一起正常工作
问题描述
我正在构建一个 electronjs python 应用程序,并且正在使用 pythonshell 模块。电子应用程序应该将我的 python 脚本打印到控制台的任何消息记录下来,但不是在应该打印每条消息时打印它,而是等待脚本完成执行,然后打印所有内容。我试过用sys.stdout.write("message")
then sys.stdout.flush()
,但还是不行。
我正在链接的问题与我有类似的问题,但对他们有用的答案在电子应用程序上对我不起作用。它在 python 后端正确刷新,前端是导致问题的原因。
解决方案
file.flush()
不一定将文件的数据写入磁盘!。您需要使用flush()
后跟os.fsync(fd)
以确保此行为。
见下文:
sys.stdout.flush()
os.fsync(sys.stdout.fileno())
os.fsync(fd)
来自 python 文档的文档
强制将带有文件描述符的文件写入
fd
磁盘。在 Unix 上,这调用了本机fsync()
函数;在 Windows 上,该MS _commit()
功能。如果您从 Python 文件对象 f 开始,首先 do
f.flush()
,然后 doos.fsync(f.fileno())
,以确保与 f 关联的所有内部缓冲区都写入磁盘。
推荐阅读
- c# - 将字节数组转换为 PNG C#?
- javascript - 使用 Ajax 更新表时,数据表元素变得不可见
- java - 置换 DFS 解决方案的实时复杂度
- django - 如何在 django html 中呈现模型的孩子
- javascript - 谷歌可视化动态引用定义的选择器
- javascript - 如何在块外访问函数数组中的局部变量
- javascript - 为什么这个打字稿程序永无止境?
- azure-logic-apps - 向 Microsoft Teams 消息添加动态链接
- python - 在 protobuff 中组合单个变量和重复变量以进行 Python 解析
- javascript - 如何计算已使用邀请的成员?