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?
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
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
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.
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
Comme je n'ai pas pu mettre de code de chargement dans le fichier python, la solution pour moi était de:
Créer un fichier launcher.sh
avec contenu:
python filename.py < filename.in > filename.out
Dans PyCharm, créez la configuration bash: Run -> Edit Configurations -> + Bash
et met launcher.sh
comme nom de script