我试图运行程序的命令提示。我有一些问题。代码如下:

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

因此,与单一的报价,我获得"文件、目录名称或卷标语法是不正确的。" 如果我代替单个的报价与\",那么它说什么效果"'C:\Program'不是一个有效的可执行。"

我意识到这是一个语法错误,但我不知道该如何来解决这个问题。...

列[3]包含一个完整的网址副本贴从一个网页浏览器(因此,它应该是url编码)。列[1]将只包含数量和时间。列[2]包含一些文本,双报价和分号替换。提到的只是以防万一...

谢谢!

有帮助吗?

解决方案

使用模块用于调用系统命令。此外,尝试除去单引号和使用双引号。

其他提示

  • Windows需要双引号,在这种情况下,你用单一的报价。
  • 使用 subprocess 模块而不是 os.system, ,这是更强大的和可以避免调壳直接,使你不必担心混淆逃避的问题。
  • 不要用 + 把一长串。使用的字符串的格式(string %s" % (formatting,)),这是更具可读性、高效和习惯.
  • 在这种情况下,不形成一长串作为一个命令无论如何,做一个清单,并通过它 subprocess.call.
  • 作为最好的,我可以告诉你是逃避你的前削减,但不是你的反斜杠,这是倒退。一个字符串与 // 有斜杠两字符串中。在任何事件,而不是要么你应该使用 os.path 模块避免任何混淆,从分析逃脱并常常使得剧本更便于携带。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top