0
pythonでパイプコマンド(echo -e "HEAD/HTTP/1.0 \ n" | ncat -C localhost 80)を呼び出そうとしています。pythonでpiped cmdを実行中 - 別の結果
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
...
期待される結果は、(シェルからその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]
考えてくれてありがとうございますが、まだ動作しません... –
リテラルな改行だからちょっと違うコマンドであっても、それを考えた後、改行は二重引用符で囲まれています。出力。 – FatalError