2016-11-05 178 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

請告訴我什麼即時做錯了?爲什麼不,我得到輸出的shell? – PuNiT

回答

0

您的命令失敗,因爲傳遞給它的參數不是您認爲的那樣;請記住,反斜槓通常被視爲Python字符串文字中轉義序列的開始。具體來說,\1\2正在被視爲八進制字符轉義,而不是數字。如果您查看了err的內容,您可能會發現類似文件未找到的錯誤。一些可能的解決方案:

  • 加倍所有的反斜槓,以逃避它們。
  • 在每個字符串前面放一個'r',以使它們'原始字符串'不專門解釋反斜槓。
  • 在這種情況下實際上並不適用,但您通常可以使用正斜槓代替 - 大多數Windows會高興地接受它們而不是反斜槓,一個例外是命令行(這就是您實際在此調用的內容)。