tutorial español pycharm io-redirection

español - pycharm documentation generator



¿Cómo redirecciono la entrada y salida con PyCharm como lo haría en la línea de comandos? (6)

Redirigir el archivo de entrada a stdin

Puedes cargar contenido a stdin usando StringIO

import StringIO sys.stdin = StringIO.StringIO(''your input'')

Entonces, si desea redirigir la entrada desde el archivo, puede leer los datos del archivo y cargarlos en la entrada estándar.

import StringIO input = "".join(open("input_file", "r").readlines()) sys.stdin = StringIO.StringIO(input)

En caso de que quiera tomar nombre de archivo como primer argumento del sistema

import StringIO filename = sys.argv[1] input = "".join(open("input_file", "r").readlines()) sys.stdin = StringIO.StringIO(input)

Capturas de pantalla:

Programa principal

Depuración de depuración

Redirigir la salida estándar al archivo de salida

Idea similar a continuación código de ejemplo

import sys sys.stdout = open(outputFile, mode=''w'', buffering=0) #skip ''buffering'' if you don''t want the output to be flushed right away after written

Con la línea de comandos, si estoy ejecutando un archivo python, puedo ingresar:

python filename.py < filename.in > filename.out

¿Hay alguna manera de imitar este comportamiento en PyCharm?


(añadido en Pycharm 5)

En la pantalla Edit Configurations , en la pestaña Logs marque la opción: Save console output to file y proporcionar un CAMINO COMPLETO Save console output to file . eso es todo - funciona como magia


Como no pude poner ningún código de carga en el archivo de Python, la solución para mí fue:

  1. Instalar el complemento BashSupport
  2. Crea el archivo launcher.sh con contenido:

    python filename.py < filename.in > filename.out

  3. En PyCharm, cree la configuración bash: Run -> Edit Configurations -> + Bash y poner launcher.sh como nombre de script


En PyCharm 5 (o incluso versiones anteriores), puede hacerlo modificando los parámetros del script en la ventana Editar Configuraciones. En esa caja, escribe

< filename.in

> filename.out

en líneas separadas


En cuanto a la entrada, puede proporcionar parámetros de entrada separados por espacios en el campo Script parameters en Run->Edit Configurations . No hay forma directa en pyCharm de redirigir la salida a un archivo a menos que esté usando alguna clase de contenedor cuyo único trabajo es escribir la salida del módulo envuelto en un archivo.


No estoy seguro de por qué no se aceptó / funcionó, pero en PyCharm 2017 funciona el siguiente enfoque:

En la ventana Run/Debug Configuration , abra el cuadro de diálogo Script Parameters e ingrese sus archivos de entrada y / o salida en líneas separadas como esta (con comillas):

< "input01.txt" > "output01.txt"

Note que tengo >> aquí, esto agrega la salida a output01.txt para que lo tenga en todas las ejecuciones múltiples.

No veo por qué este enfoque no funcionaría con versiones anteriores de PyCharm, ya que ejecuta la siguiente línea usando esta configuración:

También este enfoque funciona con un intérprete remoto en una instancia de Vagrant, por lo que ese comando está usando ssh.