0

これが私のpython端末のコピーです:

>> import subprocess
>> import shlex
>> host = 'myhost'
>> subprocess.Popen(shlex.split('ssh -o LogLevel=error -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes %s "hostname --short"' % (host))).communicate()
myhost
(None, None)

出力は になると思います('myhost', None)。出力が communicate() の戻りタプルに格納されないのはなぜですか?

4

1 に答える 1

2

subprocess.Popen呼び出しにstdout引数を与える必要があります。例えば:

>>> subprocess.Popen("ls", stdout=subprocess.PIPE).communicate()
(b'Vagrantfile\n', None)
>>>

コマンドの出力は、期待する場所に表示されます。

于 2016-07-29T16:33:06.517 に答える