[英]How to read data passed to a subprocess pipe in Python
我试图创建一个与主应用程序并行运行的工作程序子进程。 为此,我使用了subprocess.Popen和内置的PIPE。
p = subprocess.Popen( cmd , stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, universal_newlines=True)
time.sleep(.5)
data = p.stdout.readline()
for i in range(10): # repeat several times to show that it works
p.stdin.write("test")
line = p.stdout.readline()
print(line) # read output
我能够将stdout PIPE上的数据接收为可变数据 ,但是循环中的read语句始终返回空字符串。
我的子过程非常简单:
print("Its working", flush=True)
while(True):
r=input()
print("Its working", flush=True)
看来我的子进程无法读取通过stdin发送的任何数据。 如果我删除了r = input()命令,并且仅不断地打印一个字符串,它会工作,并且我会多次收到该行,但是当我尝试通过input()检查传入的字符串时,它永远不会得到它。
我是否尝试错误地获取传入PIPE上的数据,如果是,该怎么办? 我尝试了其他选择,例如:
r = sys.stdin.buffer.read()
r = sys.stdin.buffer.readline()
r = sys.stdin.read()
r = sys.stdin.readline()
但它们都不起作用。
我从主程序那边错过了\\ n。 感谢JohanL指出这一点。 现在一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.