Maison  >  Article  >  développement back-end  >  Comment rediriger la sortie exécutable vers les fichiers et le terminal ?

Comment rediriger la sortie exécutable vers les fichiers et le terminal ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 08:36:30362parcourir

How to Redirect Executable Output to Both Files and the Terminal?

Exécution d'exécutables avec sortie vers les fichiers et le terminal

Lors de l'exécution de plusieurs exécutables à l'aide de subprocess.call(), vous souhaiterez peut-être diriger le sortie standard et sortie d'erreur vers les fichiers et le terminal. Cependant, l'utilisation de stdout=outf ou stderr=errf spécifie uniquement que la sortie doit être écrite dans un fichier et non affichée sur le terminal.

Pour obtenir le comportement souhaité, vous pouvez exploiter directement la classe Popen et utiliser l' stdout=PIPE argument pour capturer la sortie standard dans un tube au lieu d'un fichier. Voici comment procéder :

<code class="python">from subprocess import Popen, PIPE

with open("out.txt", "wb") as outf, open("err.txt", "wb") as errf:
    p = Popen(["cat", __file__], stdout=PIPE, stderr=errf)
    # Read the output from the pipe
    output = p.stdout.read()
    # Write the output to the terminal
    print(output)
    # Ensure the process completes and wait for the output to be fully written
    p.wait()</code>

Dans cet exemple, nous capturons la sortie standard dans un tube et la lisons à l'aide de p.stdout.read(). Nous imprimons ensuite la sortie sur le terminal avant d'attendre la fin du processus et que la sortie soit entièrement écrite dans les fichiers. Cela garantit que la sortie est affichée sur le terminal ainsi qu'écrite dans les fichiers spécifiés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn