我正在努力了解如何使用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)