【发布时间】:2012-02-23 09:43:22
【问题描述】:
我正在尝试在 python 中调用管道命令 (echo -e "HEAD / HTTP/1.0\n" | ncat -C localhost 80)。
from subprocess import call
cmd = 'echo -e "HEAD / HTTP/1.0\n" | ncat -C localhost 80'
output=call(cmd, shell=True)
print output
但是,结果与预期不同:
HTTP/1.1 400 Bad Request
...
预期结果(从 shell 运行该 cmd 时)是:
HTTP/1.1 302 Redirect
...
更新: 我刚刚进行了实验,这似乎很有效。
from subprocess import Popen, PIPE
p1 = Popen(['echo', 'HEAD / HTTP/1.0\n'], stdout=PIPE)
p2 = Popen(["ncat", "-C", "localhost", "80"], stdin=p1.stdout)
p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
【问题讨论】:
标签: python command call subprocess pipe