如果我的管道连续数据流不能停止,我就会遇到使用stdin
中的python进行读取的问题。
举个例子,我有 data_stream.py
import time
i = 0
while True:
print(i)
i += 1
time.sleep(2)
现在我尝试使用 read_data.py
文件读取数据import sys
for line in sys.stdin:
print(line)
当我尝试使用python3 data_stream.py | python3 read_data.py
运行时,我没有得到任何结果,因为data_stream.py
没有完成。
如何在data_stream.py
仍在运行时阅读?
答案 0 :(得分:1)
您必须从read_data.py“刷新”data_stream.py和“readline”中的标准输出。 完整的代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# data_stream.py
import sys
import time
i = 0
while True:
print(i)
i += 1
sys.stdout.flush()
time.sleep(2)
read_data.py的代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# read_data.py
import sys
# Now I try to read the data with the file read_data.py
while True:
line = sys.stdin.readline()
print (line),
最诚挚的问候,