вызвать РЕДАКТОРА (vim) из скрипта Python

Я хочу вызвать редактор в скрипте 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, передать ей управление, а затем передать ее обратно, как только вы закончите с ней?

41
задан sam 10 June 2011 в 16:48
поделиться