有一個期望鍵盤輸入腳本進行交互, 我可以調用腳本使用os.system(「./腳本」)在python,如何與外部腳本(程序)
怎麼可能從另一個調用腳本發回輸入到腳本?
更新:
的腳本是:
$ cat script
#!/usr/bin/python
for i in range(4):
name=raw_input('enter your name')
print 'Welcome %s :) ' % name
當我沒有嘗試循環,它的工作原理,但它表明,只有當腳本退出輸出。
>>> p = subprocess.Popen('./script',stdin=subprocess.PIPE)
>>> p.communicate('navras')
enter your nameWelcome navras :)
當我嘗試它與福爾循環,它會拋出錯誤,如何顯示報表交互性和當標準輸出與新的打印語句
>>> p.communicate('megna')
enter your nameWelcome megna :)
enter your nameTraceback (most recent call last):
File "./script", line 3, in <module>
name=raw_input('enter your name')
EOFError: EOF when reading a line
(None, None)
這些提法應該給予更多的細節: http://docs.python.org/library/subprocess.html http://jimmyg.org/blog/2009/working-with-python-subprocess.html 在上面的例子中,您可能還想添加參數'stdout = subprocess.PIPE'。通信函數應該返回一個元組'(stdout,stderr)',並將數據發送到這些描述符中的每一個。 你也可以嘗試'p.stdin.write()'和'p.stdout.readline()'。真的,你可以像處理任何其他文件對象一樣對待'p.stdin'和'p.stdout' :) – 2010-07-16 11:40:34
當我用foor循環嘗試它時,它會引發錯誤,如何顯示交互式語句以及何時使用新的打印語句更新stdout。 >>> p.communicate( 'megna') 輸入您nameWelcome megna :) 輸入您nameTraceback(最新最後調用):在 名的raw_input =文件 「./script」,3號線,(」輸入你的名字') EOFError:讀取一行時的EOF (None,None) –
2010-07-16 11:50:41