处理与与Python子括号文件路径(Processing file paths with paren

2019-10-23 06:17发布

我要处理的文件的路径包含在其中括号。

path = "/dir/file (with parentheses).txt"

我试图处理它们在Python如下:

subprocess.call("./process %s" % path, shell=True)

不过,我得到以下错误

/bin/sh: 1: Syntax error: "(" unexpected

如何传递正确的字符串处理正确的路径?

Answer 1:

尝试这个

subprocess.call('./process "%s"' % path, shell=True)

我想问题更与文件名称空间。 带空格的文件名应该用这样的报价./process "foo bar.txt"或逃脱这样./process foo\ bar.txt



Answer 2:

不要使用shell=True 。 这是麻烦的倾向(如OP)和使外壳注入攻击 。

像这样做:

subprocess.call(["./process", path])

如果你坚持要用shell=True ,阅读安全注意事项蟒蛇文档中,并确保您使用shlex.quote正确地逃避所有的元字符。



文章来源: Processing file paths with parentheses with Python subprocess