蟒蛇,试图运行程序的命令提示
-
21-09-2019 - |
题
我试图运行程序的命令提示。我有一些问题。代码如下:
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
模块避免任何混淆,从分析逃脱并常常使得剧本更便于携带。
不隶属于 StackOverflow