這裏有兩個(相關的?)問題。當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