5
我想讓我的Python程序從管道獲取輸入,然後從終端獲取輸入。在閱讀this SO後,我試圖打開/ dev/tty來替換sys.stdin。Python:如何在sys.stdin的值發生變化時使用GNU readline?
import sys
import readline
def tty_input(prompt):
with open("/dev/tty") as terminal:
sys.stdin = terminal
user_input = input(prompt)
sys.stdin = sys.__stdin__
return user_input
這種方法的問題是,當sys.stdin!= sys .__ stdin__時,GNU readline不起作用。我無法使用箭頭鍵移動光標或導航歷史記錄。我讀到了這個提交的here這個問題的補丁,但我猜測沒有什麼結果。
如果有一種方法可以接受來自管道和終端的輸入而不更改sys.stdin的值,我樂於接受建議。
又見此錯誤報告:http://bugs.python.org/msg286521 – src