Quiero llamar a un editor en una secuencia de comandos python para solicitar la entrada del usuario, al igual que crontab e
o git commit
.llamar a un EDITOR (vim) desde una secuencia de comandos python
Aquí hay un fragmento de lo que he estado ejecutando hasta ahora. (En el futuro, puede ser que utilice $ EDITOR en lugar de vim y para que la gente puede 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 mediante el uso de Popen, parece mantener mi E/S con la secuencia de comandos de Python de entrar 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 de pitón, control de la mano hacia él, y luego pasar de nuevo una vez que haya terminado con él?
¡Brillante! Mi única modificación es agregar una reserva en caso de que EDITOR no esté configurado: 'EDITOR = os.environ.get ('EDITOR') si os.environ.get ('EDITOR') else 'vim''. He enviado esto como una edición a su, si desea aceptarlo. – sam
Gracias @sam y @unutbu por sugerencias.No sabía que podía salirse con un '$ EDITOR' no ajustado :) – progo
+1, aunque por alguna razón EDITOR no está configurado en mi Ubuntu. Strange (r) '$ editor' ejecuta Nano donde' crontab -e' ejecuta vim ... – FMCorz