Я хочу выполнить команду curl в python.
Обычно мне просто нужно ввести команду в терминале и нажать клавишу возврата. Тем не менее, я не знаю, как это работает в Python.
Команда показывает ниже:
curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere
Для получения ответа необходимо отправить файл request.json.
Я много искал и запутался. Я пытался написать кусок кода, хотя я не мог полностью понять. Это не сработало.
import pycurl
import StringIO
response = StringIO.StringIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere')
c.setopt(c.WRITEFUNCTION, response.write)
c.setopt(c.HTTPHEADER, ['Content-Type: application/json','Accept-Charset: UTF-8'])
c.setopt(c.POSTFIELDS, '@request.json')
c.perform()
c.close()
print response.getvalue()
response.close()
Сообщение об ошибке «Parse Error». Может кто-нибудь сказать мне, как это исправить? или как правильно получить ответ от сервера?
Ответы:
Для простоты, возможно, вам следует рассмотреть возможность использования библиотеки запросов .
Пример с содержимым ответа json будет выглядеть примерно так:
Если вы ищете дополнительную информацию, в разделе « Быстрый старт » у них есть много рабочих примеров.
РЕДАКТИРОВАТЬ:
Для вашего конкретного перевода curl:
источник
'Accept-Charset': 'UTF-8'
Requests
это дополнительная зависимость, которую вы должны установить и управлять. Для простого решения , используя только стандартную библиотеку, см stackoverflow.com/a/13921930/111995Просто используйте этот сайт . Он преобразует любую команду curl в Python, Node.js, PHP, R или Go.
Пример:
Становится это в Python,
источник
может быть?
если вы пытаетесь отправить файл
ааа спасибо @LukasGraf теперь я лучше понимаю, что делает его оригинальный код
источник
requests.json
файла, и не устанавливаетContent-Type: application/json
заголовок - также, это будет отправлятьGET
запрос, а неPOST
.curl -d @<file>
будет читать поля для публикации<file>
- это не то же самое, что загрузка файла.data = requests.get(url).json
должно бытьdata = requests.get(url).json()
его реализация Python будет как
проверьте эту ссылку , она поможет конвертировать команду cURl в python, php и nodejs
источник
Мой ответ - WRT python 2.6.2.
Я прошу прощения за то, что не предоставил необходимые параметры, потому что это конфиденциально.
источник
Немного предыстории: я искал именно этот вопрос, потому что мне нужно было что-то сделать для извлечения контента, но все, что у меня было, - это старая версия python с неадекватной поддержкой SSL. Если вы используете старый MacBook, вы знаете, о чем я говорю. В любом случае,
curl
работает нормально из оболочки (я подозреваю, что она связана с современной поддержкой SSL), поэтому иногда вы хотите сделать это без использованияrequests
илиurllib2
.Вы можете использовать
subprocess
модуль для выполненияcurl
и получения найденного контента:subprocess
Модуль Python 3 также содержит.run()
ряд полезных опций. Я оставлю это кому-то, кто на самом деле работает Python 3, чтобы предоставить этот ответ.источник
Этого можно достичь с помощью нижеприведенного подхода с использованием псевдо-кода
Импорт или импорт запросов Data = os.execute (curl URL) R = Data.json ()
источник