从python程序执行cmd命令

时间:2016-11-05 18:12:09

标签: python-2.7 subprocess

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"。

1 个答案:

答案 0 :(得分:0)

您的命令失败,因为传递给它的参数不是您认为的那样;请记住,反斜杠通常被视为Python字符串文字中转义序列的开始。具体来说,\1\2被视为八进制字符转义,而不是数字。如果您查看err的内容,您可能会发现类似于找不到文件的错误。一些可能的解决方案:

  • 将所有反斜杠加倍,以逃避它们。
  • 在每个字符串文字的前面放一个'r',使它们成为“原始字符串”,不会特意解释反斜杠。
  • 在这种情况下实际上并不适用,但你通常可以只使用正斜杠 - 大多数Windows会很乐意接受它们而不是反斜杠,一个例外是命令行(这是你实际上在这里调用的)。