使用Python子进程处理带括号的文件路径
我要处理的文件路径中包含括号使用Python子进程处理带括号的文件路径,python,linux,bash,subprocess,Python,Linux,Bash,Subprocess,我要处理的文件路径中包含括号 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,
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
,请阅读python文档中的,并确保使用shlex.quote
正确转义所有元字符。是否需要shell=True?如果不是这样的话,它可能会很好地将args作为一个列表,并且不会让shell在特殊字符上绊倒