2016-11-05 23 views
0
from subprocess import * 

s=Popen(['C:\Python27\Scripts\pyssim',"'C:\Users\P\Desktop\1.png'",'C:\Users\P\Desktop\2.png'],stderr=PIPE,stdout=PIPE,shell=True) 

out,err=s.communicate() 

print out 

上記のpythonプログラムは正常に実行されますが、出力は表示されません。
シェルに何も印刷されていません。
cmdでコマンドを実行しているときに、出力に「1」が出力されます。Pythonプログラムからcmdコマンドを実行

+0

私が間違っていることを教えてください。なぜ、シェルに出力されないのですか? – PuNiT

答えて

0

あなたのコマンドは、それに渡されるパラメータがあなたとは違うので、コマンドが失敗しています。バックスラッシュは通常、Pythonの文字列リテラルでエスケープシーケンスの開始として扱われることに注意してください。具体的には、\1\2は、数字ではなく8進数のエスケープとして扱われています。 errの内容を見ると、ファイルが見つからないというエラーが発生している可能性があります。いくつかの可能な解決策:

  • バックスラッシュのすべてを二重にエスケープします。
  • 各文字列リテラルの前に 'r'を置き、バックスラッシュを特別に解釈しない '生の文字列'にします。
  • この場合実際には適用されませんが、代わりにスラッシュを使用することもできます。ほとんどのWindowsでは、バックスラッシュの代わりにうれしく受け入れられますが、例外的にコマンドライン(実際にここから呼び出されます)です。
関連する問題