Python,尝试从命令提示符运行程序

时间:2010-02-17 16:43:50

标签: python windows command-line command-prompt os.system

我正在尝试从Windows中的命令提示符运行程序。我有一些问题。代码如下:

commandString = "'C:\Program Files\WebShot\webshotcmd.exe' //url '" + columns[3] + "' //out '"+columns[1]+"~"+columns[2]+".jpg'"
os.system(commandString)
time.sleep(10)

所以使用单引号我得到“文件名,目录名或卷标语法不正确。”如果我用\“替换单引号,那么它说”C:\ Program“的效果不是有效的可执行文件。”

我意识到这是一个语法错误,但我不太确定如何解决这个问题....

column [3]包含从Web浏览器粘贴的完整url副本(因此它应该是url编码的)。列[1]只包含数字和句点。 column [2]包含一些文本,双引号和冒号被替换。提到以防万一...

谢谢!

2 个答案:

答案 0 :(得分:2)

  • Windows在这种情况下需要双引号,并且您使用单引号。
  • 使用subprocess模块而不是os.system,这样更强大,并且可以避免直接调用shell,这样您就不必担心混淆转义问题。
  • 不要使用+将长字符串组合在一起。使用字符串格式(string %s" % (formatting,)),这种格式更具可读性,效率和惯用语。
  • 在这种情况下,不要将长字符串形成为shell命令,制作一个列表并将其传递给subprocess.call
  • 尽我所知告诉你正在逃避你的正斜线而不是你的反斜杠,这是向后的。带有//的字符串文字在其生成的字符串中都有斜杠。无论如何,你应该使用os.path模块来避免解析转义的任何混淆,并且通常会使脚本更具可移植性。

答案 1 :(得分:1)

使用subprocess模块调用系统命令。另外,请尝试删除单引号并使用双引号。