Python,从命令提示符运行程序
我正在尝试在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 模块来调用系统命令。此外,试着去掉单引号,改用双引号。