J'appelle un script perl sur un fichier txt externe de python, et j'imprime la sortie dans un fichier de sortie. Mais à la place, je veux rediriger la sortie vers le genre d'unix. En ce moment, je ne suis pas en train de piping, mais d'abord écrire la sortie du programme Perl, puis en combinant mon code sous, et this stackoverflow answer.Résultat de tuyau du sous-processus au tri unix
import subprocess
import sys
import os
for file in os.listdir("."):
with open(file + ".out", 'w') as outfile:
p = subprocess.Popen(["perl", "pydyn.pl", file], stdout=outfile)
p.wait()
Vous utilisez de manière incorrecte python. Si vous appelez beaucoup de processus externes (comme le tri), au lieu d'utiliser des modules python, il est préférable d'utiliser bash, ipython ou un autre shell. – ventsyv
vous pouvez également diriger le résultat 'p = subprocess.Popen (" perl pydyn.pl% s | sort "% fichier, stdout = outfile, shell = True)' mais pour cela vous allez devoir le faire 'shell = True 'ce qui n'est pas une bonne pratique –
related: [Comment utiliser subprocess.Popen pour connecter plusieurs processus par des tuyaux?] (Http://stackoverflow.com/q/295459/4279) – jfs