执行可执行文件并输出到文件和终端
当使用 subprocess.call() 执行多个可执行文件时,您可能需要指示标准输出和错误输出到文件和终端。但是,使用 stdout=outf 或 stderr=errf 仅指定输出应写入文件,而不是显示在终端上。
要实现所需的行为,您可以直接利用 Popen 类并使用stdout=PIPE 参数用于捕获管道而不是文件中的标准输出。具体方法如下:
<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>
在此示例中,我们捕获管道中的 stdout 并使用 p.stdout.read() 读取它。然后,我们将输出打印到终端,然后等待进程完成并将输出完全写入文件。这可确保输出显示在终端上并写入指定的文件。
以上是如何将可执行输出重定向到文件和终端?的详细内容。更多信息请关注PHP中文网其他相关文章!