gpt4 book ai didi

Python STDIN readline block

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:32 25 4
gpt4 key购买 nike

我有一个像这样写入 stdout 的脚本:

# Send.py
import time

while(1):
print "hello"
time.sleep(0.1)

现在我有另一个脚本需要这样读取它:

# Listen.py
while(1) :

print "reading.."
data = sys.stdin.read()
print data

python Send.py | python listen.py

不幸的是,这只是在阅读时停止并且没有任何内容被打印出来。这是为什么?

最佳答案

read() 方法会读取到 EOF,但第一个程序永远不会结束; read() 不会返回。

你需要逐行阅读。

替换以下行:

data = sys.stdin.read()

与:

data = sys.stdin.readline()

除此之外,readline() 将返回带有换行符的读取行,并且 print 语句会在字符串之后追加新行,从而产生中间的空行。为防止出现这种情况,请使用 sys.stdout.write:

data = sys.stdin.readline()
sys.stdout.write(data)

更新

shell 将缓冲输出。为了防止它,刷新输出:

import sys
import time

while 1:
print "hello"
sys.stdout.flush()
time.sleep(0.1)

或者,您可以使用 -u 选项使 stdout、stderr 无缓冲。

python -u send.py | python listen.py

关于Python STDIN readline block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com