这里有两个(相关的?)问题。当Popen调用并写入标准输入时Python出现奇怪的行为
我试图编写一个程序来启动一个外部进程,然后simultani从stdout中读取并写入到stdin。一切似乎都在工作,但是这个过程并没有响应发送到它的stdin管道的数据。你知道为什么会这样吗?(1)
第二个问题现在就解决了。
我写了两个测试脚本,第一次是这样:
# recv.py
while True:
print(input())
第二个被设计用popen来调用其他的给它一些任意的输入:
# send.py
recv = subprocess.Popen(["python", "recv.py"], stdin=subprocess.PIPE)
recv.stdin.write(b"Hello\n")
recv.stdin.write(b"World.\n")
这是我得到了什么,当我跑它:
[email protected]:testing$ python send.py
[email protected]:testing$ Traceback (most recent call last):
File "recv.py", line 30, in <module>
main()
File "recv.py", line 26, in main
print(input())
File "<string>", line 1, in <module>
NameError: name 'Hello' is not defined
它看起来像whatev呃理由input()
的结果被视为线的一部分,而不是字符串,事实上当我在recv.py中设置变量Hello
时,它打印的内容为Hello
。为什么会发生这种情况?(2)
我在Mac OSX上运行python 3.1.2。
也许为了鼓励对(1)的回答,你应该提供一个更清晰的代码描述 - 也许有特定的例子。 – chisaipete 2011-06-15 00:07:42