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

-1 投票
2 回答
1522 浏览
提问于 2025-04-15 19:24

我正在尝试在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]包含的是从网页浏览器复制粘贴的完整网址(所以应该是经过网址编码的)。column[1]只会包含数字和句点。column[2]包含一些文本,双引号和冒号被替换了。提到这些是以防万一……

谢谢!

2 个回答

2
  • 在这种情况下,Windows需要用双引号,而你用了单引号。
  • 建议使用subprocess模块,而不是os.system,因为subprocess更强大,而且不直接调用命令行,这样你就不用担心那些复杂的转义问题了。
  • 不要用+来拼接很长的字符串。可以使用字符串格式化(比如string %s" % (formatting,)),这样更容易读,也更高效,更符合习惯。
  • 在这种情况下,不要把长字符串当作命令来处理,应该把它做成一个列表,然后传给subprocess.call
  • 根据我的理解,你在处理正斜杠时进行了转义,但反斜杠却没有,这样是反的。一个包含//的字符串会同时包含两个斜杠。无论如何,建议使用os.path模块,这样可以避免解析转义时的困惑,并且通常能让脚本更具可移植性。
1

使用 subprocess 模块来调用系统命令。此外,试着去掉单引号,改用双引号。

撰写回答