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