Я хочу, чтобы моя программа на 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
Проблема с этим подходом заключается в том, что строка чтения GNU не работает, когда sys.stdin != sys.__stdin__. Я не могу использовать клавиши со стрелками для перемещения курсора или навигации по истории. Я читал о патче для этой самой проблемы, который был отправлен здесь, но я предполагаю, что ничего не вышло Это.
Если есть способ принимать ввод как из канала, так и из терминала без изменения значения sys.stdin, я открыт для предложений.