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?
Como no pude poner ningún código de carga en el archivo de Python, la solución para mí fue:
- Instalar el complemento BashSupport
Crea el archivo
launcher.sh
con contenido:python filename.py < filename.in > filename.out
En PyCharm, cree la configuración bash:
Run -> Edit Configurations -> + Bash
y ponerlauncher.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.