Python3如何处理subprocess.run输出中返回的特殊字符



我正在运行的代码看起来像这个

o=subprocess.run( ['ls -1 pathtosomedir/'+prefix+'*'],shell=True, stdout=subprocess.PIPE, universal_newlines=True)
print('details:',o.stdout)

如果返回的文件有括号,例如test(1(.csv

则输出为

详细信息:测试(1(.csv

/bin/sh:1:语法错误:"("意外

为什么它似乎试图解析输出?处理这些案件的正确方法是什么?谢谢

(我使用的是python 3.6.9(

EDIT:结果是o.stdout被传递给了后续的子进程.run。如果o.stdout包含方括号,则需要如答案中所述对其进行转义。结束这个问题。

stdoutprint语句不应解析输出。这个问题很可能在第一线。

prefix变量中是否有括号或特殊字符?例如:

o=subprocess.run(['ls' + ' test(1)'])

会给你指定的确切错误

/bin/sh: -c: line 0: syntax error near unexpected token (

因为你需要用反斜杠转义括号,比如:

o=subprocess.run(['ls' + ' test(1)'])

最新更新