Python子流程管道

cra*_*aft 0 python

我正在努力了解如何使用python管道命令.

我想做的是:

echo 'subject:Hello World' | "/usr/bin/xxx -C -P Support\\XXX vmail"
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它只是抛出错误"TypeError:bufsize必须是一个整数"

subprocess.call("echo","subject:xxx","|","/usr/bin/xxx","-C","-P","Support\\XXX","vmail")
Run Code Online (Sandbox Code Playgroud)

这可以用python完成吗?

编辑

我设法使用2个进程让它工作,但是如果我想将python对象(电子邮件消息)作为对象传递给外部程序而不是将其转换为字符串并回显它呢?

小智 5

使用两个进程并将它们连接在一起.

import subprocess

with open("/tmp/out.txt", "w") as o:
    p1 = subprocess.Popen(["date"], stdout=subprocess.PIPE)
    p2 = subprocess.Popen(["cat"], stdin=p1.stdout, stdout=o)
Run Code Online (Sandbox Code Playgroud)

这相当于

$ date | cat > /tmp/out.txt
Run Code Online (Sandbox Code Playgroud)