Python использовать curl с подпроцессом, записать результат в файл - PullRequest
0 голосов
/ 25 ноября 2018

Если я использую следующую команду в Git Bash, она работает нормально.Вывод из локона записывается в файл output.txt

curl -k --silent "https://gitlab.myurl.com/api/v4/groups?page=1&per_page=1&simple=yes&private_token=mytoken&all?page=1&per_page=1" > output.txt

Код Python:

import subprocess, shlex
command = shlex.split("curl -k --silent https://gitlab.myurl.com/api/v4/groups?page=1&per_page=1&simple=yes&private_token=mytoken&all?page=1&per_page=1 > output.txt")
subprocess.Popen(command)

Код Python ничего не записывает в мой файл "output.txt".Как я могу написать в output.txt или получить прямой вывод в Python?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Вы можете использовать команду другим способом для записи в output.txt :

curl -k --silent "https://gitlab.myurl.com/api/v4/groups?page=1&per_page=1&simple=yes&private_token=mytoken&all?page=1&per_page=1" --output output.txt

Также вы должны учитывать, что output.txt можетНе сохраняйте в ожидаемом каталоге, поэтому я бы посоветовал вам назвать output.txt другим способом, уникальным, затем обновить базу данных команд locate linux (см. команду updatedb) изатем найдите файл с помощью locate.

PS: все это имеет смысл, когда вам нужно записать в output.txt (ваш вопрос также принимает эту ситуацию, поэтому я надеюсь, что это поможет)

0 голосов
/ 25 ноября 2018

Вы не можете использовать перенаправление напрямую с подпроцессом, потому что это функция оболочки.Используйте check_output:

import subprocess
command = ["curl", "-k", "--silent", "https://gitlab.myurl.com/api/v4/groups?page=1&per_page=1&simple=yes&private_token=mytoken&all?page=1&per_page=1"]
output = subprocess.check_output(command)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...