我可以为您翻译以下内容,这是一段关于IT技术的翻译,涉及代码操作。为了更好地理解这段翻译,请注意保留HTML标记。
我有一个简单的脚本,从设备中读取值并通过print
输出它们。另一个脚本通过监听标准输入并解释每个数字。该设备每秒输出一个数字。令人惊讶的是,在我的Ubuntu计算机上将这两个脚本通过管道连接时却无法正常工作。然而,如果第一个脚本不是从设备读取数据而是尽可能快地生成随机数,则第二个脚本可以成功接收数据。
下面是一个简化版的示例:
print.py:
#!/usr/bin/env python2
import time
import sys
while True:
time.sleep(1) # without this everything works
print "42"
sys.stdout.flush()
read.py:
#!/usr/bin/env python2
import sys
while True:
for str in sys.stdin:
print str
命令行调用:
vorac@laptop:~/test$ ./print.py | ./read.py
这是最终结果。第一段脚本从设备中读取数据,第二段将数据分别在两个不同的时间框架内进行图形化展示(显示的是随机数字)。
read.py
中添加了newin = os.fdopen(sys.stdin.fileno(), 'r', 0); sys.stdin = newin
,但是没有任何变化。我强烈希望以编程方式解决这个问题,并保持脚本调用的简单性。 - Voraccat
。 - David Z