1
私はPython 2.7でサブプロセスモジュールを使用しています。私のコードは次のようになりますPython 2.7 Get Command stdout/stderr
cmd = 'unrar l -p%s %s' % (pwd, filename)
proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
(output, err) = proc.communicate()
このコードはWindows 7/10でうまく動作しますが、Ubuntu 16.04では動作しません。私はデバッグし、変数errが空であることを見ました。これは、Windows上でエラーメッセージが含まれています。変数出力には、コマンドのヘルプメッセージが含まれています。コマンドがオプションなしで実行されたようです。
これがコマンドを実行してstdout/stderr出力を得る正しい方法でない場合、正しい方法は何ですか?
'pwd'または' filename'にスペースが含まれていると失敗します。 shlex.split()または単に 'cmd = [" unrar "、" l "、" -p "、pwd、filename]'を考え、 'shell = True'をドロップします。 –