为什么python调用函数不起作用?

为什么python调用函数不起作用?,python,Python,我试图从python脚本调用bash函数。但是,我只能调用发送所有字符串的函数 这通电话有效 call ("mongoexport -h localhost -d dbinspection -c aggtest -u seppemarotta -p seppemarotta -o aggtest.csv --csv -f \"_id\",\"total_recomendations\"",shell=True) 此调用不起作用,它显示“分析命令行时出错:位置选项太多”。我做的唯一一件事就是将每

我试图从python脚本调用bash函数。但是,我只能调用发送所有字符串的函数

这通电话有效

call ("mongoexport -h localhost -d dbinspection -c aggtest -u seppemarotta -p seppemarotta -o aggtest.csv --csv -f \"_id\",\"total_recomendations\"",shell=True)
此调用不起作用,它显示“分析命令行时出错:位置选项太多”。我做的唯一一件事就是将每个参数作为向量发送,将字段保存在变量中

call(["mongoexport","-h",url,"-d",db,"-c",col,"-u",user,"-p",pw,"-o",filename,"--csv","-f","\"_id\"","\"total_recomendations\""])

你在最后犯了错误——列表的最后一项应该是什么,你写了两项:

"\"_id\"","\"total_recomendations\""
因此,将其更改为(我建议):


通过在其周围使用单引号,您不需要转义其中的双引号,从而使整个IMHO更具可读性。无论如何,核心思想是逗号必须是one字符串的一部分,而您将其写成分隔两个字符串(列表项)。

我明白了,我刚刚注意到该项被视为一项,我们每天都在学习。多谢各位much@Giuseppe是的,shell在(非转义)空格上拆分args,在您的第一个版本中,该项不包含空格,因此,shell没有拆分它。但无论如何,避免使用shell=True几乎总是非常可取的。
'"_id","total_recomendations"'