Я пытаюсь вызвать функцию bash из скрипта python. Однако им только в состоянии вызвать функцию отправки всю строкуПочему функция вызова python не работает?
Это называют это работает
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\""])
Я вижу, я только что заметил, что этот предмет считается одним, хорошо мы изучаем материал каждый день. Большое спасибо – Giuseppe
@Giuseppe yep, оболочка разбивает аргументы на (неэкранированном) пробеле, а в вашей первой версии этот элемент не содержит пробелов, поэтому оболочка не разделила его. Но избегать «shell = True», почти всегда, намного предпочтительнее. –