Python 子流程模块 PIPE 行

Python Subprocess Module PIPE Lines

大家对 Python 子流程模块下的 PIPE 线了解多少?

这是一个例子:

代码 1:

from subprocess import *
output = Popen("ls")

代码 2

from subprocess import *
output = Popen("ls", stdin=PIPE, stdout=PIPE)

这两个代码有什么不同?

提前致谢

在您的第一个代码中,output 将是一个包含当前目录中 ls 命令结果的对象。

在你的第二个代码中,你正在管道 ls 命令的 stdout,在这里你已经使用了 stdin 只提到 PIPE 这是错误的没有提及您从中拿走的任何物品 stdin.

你的第二个代码在这种形式下可能会更好:

from subprocess import *
output = Popen(["ls"], stdout=PIPE).communicate()[0]

这里我使用了 subprocesscommunicate 方法来获取 stdout(和 stderr)通过管道发送到其 stdin。它 returns 是 (stdout, stderr) 的一个元组,但我们只对 stdout (索引 0)感兴趣,所以我使用了 communicate()[0].