Вызов команды инструмента SOLR post с использованием подпроцесса Python - PullRequest
0 голосов
/ 12 марта 2019

Я хочу вызвать эту команду SOLR post через подпроцесс Python:

/u01/tony/solr-7.5.0/bin/post -c techproducts /u01/tony/data/bbc/politics/*.txt -params "literal.keywords=politics"

Я попытался запустить это с помощью модуля подпроцесса python следующим образом:

subprocess.run(["/u01/tony/solr-7.5.0/bin/post -c techproducts /u01/tony/data/bbc/politics/*.txt -params", "literal.keywords=politics"], stdout=PIPE, stderr=PIPE)

Но это приводит к следующей ошибке:

FileNotFoundError: [Errno 2] No such file or directory: '/u01/tony/solr-7.5.0/bin/post -c techproducts /u01/tony/data/bbc/politics/*.txt -params': '/u01/tony/solr-7.5.0/bin/post -c techproducts /u01/tony/data/bbc/politics/*.txt -params'

1 Ответ

2 голосов
/ 12 марта 2019

Вам нужно разделить все ваши аргументы - первый аргумент - это команда для запуска.

["/u01/tony/solr-7.5.0/bin/post", "-c", "techproducts", "/u01/tony/data/bbc/politics/*.txt", "-params", "literal.keywords=politics"

Также помните, что расширение *.txt выполняется вашей оболочкой, поэтому, если командане вызывается в контексте оболочки (.. которого здесь нет), он не будет расширен.Однако, поскольку инструмент bin/post принимает каталог в качестве прямого параметра и имеет параметр -filetypes, вместо него можно использовать

"-filetypes txt", "/u01/tony/data/bbc/politics/"

..

Инструмент bin/postтакже является сценарием оболочки, поэтому, если он не разрешает прямой вызов (я не уверен, как это разрешается), вам, возможно, придется добавить массив вызовов также с

"/usr/bin/env", "bash"

.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...