我要处理的文件的路径包含在其中括号。
path = "/dir/file (with parentheses).txt"
我试图处理它们在Python如下:
subprocess.call("./process %s" % path, shell=True)
不过,我得到以下错误
/bin/sh: 1: Syntax error: "(" unexpected
如何传递正确的字符串处理正确的路径?
我要处理的文件的路径包含在其中括号。
path = "/dir/file (with parentheses).txt"
我试图处理它们在Python如下:
subprocess.call("./process %s" % path, shell=True)
不过,我得到以下错误
/bin/sh: 1: Syntax error: "(" unexpected
如何传递正确的字符串处理正确的路径?
尝试这个
subprocess.call('./process "%s"' % path, shell=True)
我想问题更与文件名称空间。 带空格的文件名应该用这样的报价./process "foo bar.txt"
或逃脱这样./process foo\ bar.txt
。
不要使用shell=True
。 这是麻烦的倾向(如OP)和使外壳注入攻击 。
像这样做:
subprocess.call(["./process", path])
如果你坚持要用shell=True
,阅读安全注意事项蟒蛇文档中,并确保您使用shlex.quote
正确地逃避所有的元字符。