Я хочу вызвать редактор в скрипте Python, чтобы запросить ввод от пользователя, как и crontab e
или git commit
делает.
Вот отрывок из того, что я уже использовал. (В будущем я мог бы использовать $ EDITOR вместо vim, чтобы люди могли настраивать их по своему вкусу.)
tmp_file = '/tmp/up.'+''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
edit_call = [ "vim",tmp_file]
edit = subprocess.Popen(edit_call,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True )
Моя проблема в том, что, используя Popen,похоже, что мой ввод-вывод с помощью скрипта python не попадает в работающую копию vim, и я не могу найти способ просто передать ввод-вывод в vim. Я получаю следующую ошибку.
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
Как лучше всего вызвать программу CLI из python, передать ей управление, а затем передать ее обратно, как только вы закончите с ней?