Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python子进程处理带括号的文件路径_Python_Linux_Bash_Subprocess - Fatal编程技术网

使用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在特殊字符上绊倒