web-dev-qa-db-fra.com

Comment rediriger l'entrée et la sortie avec PyCharm comme je le ferais sur la ligne de commande?

Avec la ligne de commande si j'exécute un fichier python je peux entrer:

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

Existe-t-il un moyen d'imiter ce comportement dans PyCharm?

26
Sophie

(ajouté dans Pycharm 5)

Dans le Edit Configurations écran sous Logs onglet cocher l'option: Save console output to file et fournissez un CHEMIN COMPLET au fichier de sortie. c'est tout - fonctionne comme par magie

enter image description here

27
yossico

Rediriger le fichier d'entrée vers stdin

Vous pouvez charger du contenu dans stdin en utilisant StringIO

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

Donc, si vous voulez rediriger l'entrée du fichier, vous pouvez lire les données du fichier et les charger dans stdin

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

Si vous voulez prendre le nom de fichier comme premier argument système

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

Captures d'écran:

Programme principal 

Déboguer la configuration 

Rediriger stdout vers le fichier de sortie

Idée similaire à l'exemple de code ci-dessous

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
5
Vu Anh

Quant à l'entrée, vous pouvez fournir des paramètres d'entrée séparés par des espaces dans Script parameters champ sous Run->Edit Configurations. Il n'y a aucun moyen direct dans pyCharm de rediriger la sortie vers un fichier à moins que vous n'utilisiez une classe wrapper dont le seul travail est d'écrire la sortie du module encapsulé dans un fichier.

4
Shan Valleru

Dans PyCharm 5 (ou même dans les versions précédentes), vous pouvez le faire en modifiant les paramètres de script dans la fenêtre Modifier les configurations. Dans cette case, écrivez

< filename.in

> filename.out

sur des lignes séparées

3
Nitin

Comme je n'ai pas pu mettre de code de chargement dans le fichier python, la solution pour moi était de:

  1. Installer BashSupport plugin
  2. Créer un fichier launcher.sh avec contenu:

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

  3. Dans PyCharm, créez la configuration bash: Run -> Edit Configurations -> + Bash et met launcher.sh comme nom de script

1
Jiří Mauritz