如何传递var,包括引号(“”)

时间:2014-05-24 00:46:24

标签: python

我有以下代码,其中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()

3 个答案:

答案 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)