2016-11-05 184 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会高兴地接受它们而不是反斜杠,一个例外是命令行(这就是您实际在此调用的内容)。