我正在运行的代码看起来像这个
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包含方括号,则需要如答案中所述对其进行转义。结束这个问题。
stdout
和print
语句不应解析输出。这个问题很可能在第一线。
prefix
变量中是否有括号或特殊字符?例如:
o=subprocess.run(['ls' + ' test(1)'])
会给你指定的确切错误
/bin/sh: -c: line 0: syntax error near unexpected token (
因为你需要用反斜杠转义括号,比如:
o=subprocess.run(['ls' + ' test(1)'])