python - 无法将 python 输出通过管道传递给程序

标签 python linux

我想将 stdout 从 python 传输到另一个程序,但我遇到了一个问题,我的 stdout 没有通过管道传输。

我已将其简化为一个简单示例:

import time

while True:
    print("Hello!")
    time.sleep(1)

我用 cat 像这样检查它:

./my_python_script.py | cat

然后我什么也得不到。

奇怪的是,如果我删除 sleep 命令,它就可以正常工作。但是,我不想那么快地通过管道传输输出,所以我真的很想睡一会。

我检查了相应的 bash 脚本:

while true; do
    echo "Hello!"
    sleep 1
done

这也很有魅力。那么关于为什么 python 脚本没有按预期管道输出的任何想法?谢谢!

最佳答案

您需要刷新标准输出:

import time
import sys

while True:
    print("Hello!")
    sys.stdout.flush()
    time.sleep(1)

关于python - 无法将 python 输出通过管道传递给程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39212541/

相关文章:

python - 如何知道 Matplotlib 为散点图使用了多少个数据点

python - 使用 Beautiful Soup 的 Python 网络爬虫 BFS 算法?

linux - 如何让 nmap 不记录已关闭的主机?

linux - Bash 命令替换给出奇怪的不一致输出

linux - 有没有办法在不重建其依赖项的情况下强制重建目标(make -B)?

python - 在pygame中点击按钮

python - 连接两个长度不同的列表中的元素

Python:返回列表的第一个元素的索引,这使得传递的函数为真

linux - 防止linux线程被调度程序中断

linux - Linux 是否实现页面着色?