我正在尝试从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]包含一些文本,双引号和冒号被替换。提到以防万一...
谢谢!
答案 0 :(得分:2)
subprocess
模块而不是os.system
,这样更强大,并且可以避免直接调用shell,这样您就不必担心混淆转义问题。+
将长字符串组合在一起。使用字符串格式(string %s" % (formatting,)
),这种格式更具可读性,效率和惯用语。subprocess.call
。//
的字符串文字在其生成的字符串中都有斜杠。无论如何,你应该使用os.path
模块来避免解析转义的任何混淆,并且通常会使脚本更具可移植性。答案 1 :(得分:1)
使用subprocess模块调用系统命令。另外,请尝试删除单引号并使用双引号。