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!