2011-08-05 12 views
9

Al usar Python a través de la línea de comandos, si veo un error en una línea anterior de una declaración anidada, ¿hay alguna manera de eliminar o editar esa línea una vez que ya se ha ingresado?Línea de comando Python: error de edición en la línea anterior?

ej .:

>>> file = open("file1", "w") 
>>> for line in file: 
...  parts = line.split('|') <-- example, I meant to type '\' instead 
...  print parts[0:1] 
...  print ";" 
...  print parts[1:] 

así en lugar de volver a escribir toda la cosa por todas partes para fijar un char, puedo volver atrás y editar algo en retrospectiva? Sé que podría codificarlo en vim o algo así y tener una copia persistente Puedo hacer lo que quiera, pero esperaba un truco práctico con la línea de comandos.

- gracias!

+2

El valor predeterminado cmd es un poco limitado. Debería consultar [IPython] (http://ipython.org/). He tenido mejores experiencias con eso. –

+0

Por supuesto, si tuviera que hacerlo, podría redefinir 'partes', pero sé que eso no es lo que está buscando. – Draksis

Respuesta

7

No se puede hacer tal cosa en el intérprete original de python, sin embargo, si utiliza la última versión de IPython, proporciona un lightweight GUI (parece un shell simple, pero en realidad es una GUI) que tiene funciones múltiples edición en línea, resaltado de sintaxis y un montón de otras cosas. Para usar IPython GUI, ejecútelo con el comando ipython qtconsole.

1

No lo sé en todos los años que he estado codificando Python. Para eso están los editores de texto =)

Si usted es un usuario de Emacs, puede configurar su entorno para que la ventana se divida en el búfer de código y el búfer de shell Python, y luego ejecute todo el búfer para ver los cambios .

1

Quizás. El Python Tutorial dice:

Quizás la comprobación más rápida para ver si la edición de línea de comandos es compatible es escribir Control-P en el primer aviso de Python que se obtiene. Si emite un pitido, tiene una edición de línea de comando; ver Appendix Interactive Input Edición e historial Sustitución para una introducción a las teclas. Si no parece ocurrir nada, o si se repite^P, la edición de la línea de comando no está disponible; solo podrá usar el retroceso para eliminar caracteres de la línea actual.

+1

Esto solo le permite tirar de la línea anterior, de ninguna manera le permite cambiar una sola línea de un bloque y luego ejecutar ese bloque de una vez, que es lo que quiere el OP. – Wilduck

0

Además de la sugerencia de @ MatToufoutu, también puede echar un vistazo a DreamPie, aunque es sólo una interfaz gráfica de usuario para la cáscara y sin otras extensiones de IPython.

0

Ahora, en lugar de usar ipython

jupyter console 

en línea de comandos

Cuestiones relacionadas