Maison > Article > développement back-end > Comment puis-je écrire simultanément la sortie du sous-processus sur le terminal et les fichiers en Python ?
Écriture de la sortie du processus vers le terminal et les fichiers simultanément avec le sous-processus de Python
Lors de l'exécution de plusieurs exécutables à l'aide de subprocess.call(), il est souhaitable d'avoir sortie affichée à la fois dans le terminal et dans un fichier désigné. Cependant, le comportement par défaut autorise uniquement la redirection de sortie vers un fichier ou un terminal.
Pour surmonter cette limitation, envisagez d'utiliser Popen directement en conjonction avec l'argument stdout=PIPE. Cela vous permettra de lire la sortie de l'attribut stdout de l'objet Popen.
Pour obtenir le comportement souhaité, suivez les étapes suivantes :
Voici un exemple d'utilisation de ces fonctions :
<code class="python">import sys from subprocess import Popen, PIPE from threading import Thread def tee(infile, *files): ... def teed_call(cmd_args, **kwargs): ... outf, errf = open("out.txt", "wb"), open("err.txt", "wb") assert not teed_call(["cat", __file__], stdout=None, stderr=errf) assert not teed_call(["echo", "abc"], stdout=outf, stderr=errf, bufsize=0) assert teed_call(["gcc", "a b"], close_fds=True, stdout=outf, stderr=errf)</code>
Ce code écrit efficacement la sortie dans les deux les fichiers et le terminal simultanément pour chaque commande exécutée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!