【问题标题】:Executing cmd commands from python program从python程序执行cmd命令
【发布时间】:2026-01-20 11:45:02
【问题描述】:
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”。

【问题讨论】:

  • 请告诉我我做错了什么?为什么我在 shell 上没有输出?

标签: python-2.7 subprocess


【解决方案1】:

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

  • 将所有反斜杠加倍,以将其转义。
  • 在每个字符串字面量前添加一个“r”,使它们成为不专门解释反斜杠的“原始字符串”。
  • 在这种情况下实际上并不适用,但您通常可以只使用正斜杠来代替 - 大多数 Windows 会很乐意接受它们而不是反斜杠,一个例外是命令行(这是您在此处实际调用的内容)。

【讨论】: