我有一个变量toPath
(包含C:/Program Files(x86)/bla
之类的路径。)
这个变量我作为agrument传递:'[-operation update -contents ' + toPath + ']'
但是因为我在这个变量中有空格,所以我得到了IllegalArgumentException。
我该如何解决这个问题?
答案 0 :(得分:2)
用双引号传递参数。
toPath = "\"C:/Program Files(x86)/bla\"";
答案 1 :(得分:2)
我不确定,但看起来你正试图做一个典型的新手错误。
如果您尝试运行从多个变量构建的命令,则可能容易受到注入攻击。要防止这种情况,请使用subprocess模块并将所有参数作为列表提交。该模块将处理所有的东西,使其也适用于空格。
例如ls -l
应该运行为:
subprocess.call(["ls", "-l"])
你的例子caontains []
可能会有所不同但没有它会是:
subprocess.call(['-operation','update', '-contents', toPath])
请注意,除了call()
之外还有其他功能(仅返回返回代码)。
答案 2 :(得分:1)
尝试
'[-operation update -contents "' + toPath + '"]'