Предыстория: у меня есть подпроцесс Python, который подключается к приложению, похожему на оболочку, которое использует библиотеку readline для обработки ввода, и это приложение имеет подпрограмму TAB-complete для ввода команд, как bash. Дочерний процесс порождается, например:
def get_cli_subprocess_handle():
return subprocess.Popen(
'/bin/myshell',
shell=False,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
)
Все отлично работает, кроме табуляции. Всякий раз, когда моя программа на Python передает символ табуляции '\t'
в подпроцесс, я получаю 5 пробелов в стандартном вводе STDIN вместо запуска процедуры завершения табуляции библиотеки readline. :(
Вопрос. Что я могу отправить в STDIN подпроцесса, чтобы вызвать дочернюю функцию завершения табуляции? Возможно, спросили по-другому: как отправить ключ TAB, а не символ TAB, если это даже возможно?
Похоже, но без ответа и отклонено:
'\t'
через re.sub(), поэтому я знаю, что это не 5 пробелов. Спасибо за двойную проверку! - person Trevor   schedule 29.01.2013