[英]Python DeBugger in Ubuntu: How to use PDB when you have sys.stdin in your Python code?
[英]Python: How can I use GNU readline when the value of sys.stdin has been changed?
我希望我的Python程序從管道中獲取輸入,然后從終端獲取輸入。 閱讀此 SO帖子后,我嘗試打開/ dev / tty來替換sys.stdin。
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不起作用。 我無法使用箭頭鍵移動光標或導航歷史記錄。 我讀到了這里提交的這個問題的補丁,但我猜測沒有任何結果。
如果有辦法接受來自管道和終端的輸入而不改變sys.stdin的值,我願意接受建議。
我敢打賭, sys.stdin
和sys.__stdin__
不是你認為的那樣。 在重新分配它之前,我會保存原始的sys.stdin。
import sys
import readline
def tty_input(prompt):
oldStdin = sys.stdin
with open("/dev/tty") as terminal:
sys.stdin = terminal
user_input = input(prompt)
sys.stdin = oldStdin
return user_input
或者復制一份
import sys
import readline
import copy
def tty_input(prompt):
oldStdin = copy.copy(sys.stdin)
with open("/dev/tty") as terminal:
sys.stdin = terminal
user_input = input(prompt)
sys.stdin = oldStdin
return user_input
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.