llamar a un EDITOR (vim) desde un script de python

Quiero llamar a un editor en un script de Python para solicitar la entrada del usuario, al igual quecrontab e ogit commit hace

Aquí hay un fragmento de lo que tengo corriendo hasta ahora. (En el futuro, podría usar $ EDITOR en lugar de vim para que la gente pueda personalizar a su gusto).

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 )   

Mi problema es que al usar Popen, parece que mi E / S con el script de Python no entra en la copia en ejecución de vim, y no puedo encontrar una manera de pasar la E / S a vim. Obtuve el siguiente error

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

¿Cuál es la mejor manera de llamar a un programa CLI desde Python, pasarle el control y luego pasarlo una vez que haya terminado con él?

Respuestas a la pregunta(4)

Su respuesta a la pregunta