我有以下代码,其中var有几个数字,我需要将此var传递给如下所示的更改选项,命令应该如下所示,我尝试了下面的,有人能建议正确的方法吗?
def main():
var = "735531 12345"
call("tool.exe changes=%s " ,shell=True)
#command should be run as follows
#tool.exe changes="735531 12345"
if __name__ == '__main__':
main()
答案 0 :(得分:3)
将%s
放在双引号中并使用单引号创建字符串文字:
call('tool.exe changes="%s"' % var, shell=True)
参见下面的演示:
>>> var = "735531 12345"
>>> '"%s"' % var
'"735531 12345"'
>>> print '"%s"' % var
"735531 12345"
>>>
答案 1 :(得分:1)
使用反斜杠来转义引号:
call("tool.exe changes=\"{0}\"".format(var), shell=True)
答案 2 :(得分:1)
如果从程序之外的任何地方接受输入var,则必须先将var转义为var,然后再将其传递给shell。这将阻止var内部的命令拥有你的盒子。
var="1234;rm -rf filename"
subprocess.call("tool.exe %s"%pipes.quote(var),shell=True)