Quiero ejecutar un comando curl en python.
Por lo general, solo necesito ingresar el comando en la terminal y presionar la tecla de retorno. Sin embargo, no sé cómo funciona en Python.
El comando se muestra a continuación:
curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=mykeyhere
Hay un archivo request.json que se enviará para obtener respuesta.
Busqué mucho y me confundí. Traté de escribir un código, aunque no pude entenderlo completamente. No funcionó.
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()
El mensaje de error es 'Parse Error'. ¿Alguien puede decirme cómo solucionarlo? o cómo obtener la respuesta del servidor correctamente?
Respuestas:
En aras de la simplicidad, tal vez debería considerar usar la biblioteca de solicitudes .
Un ejemplo con contenido de respuesta json sería algo como:
Si busca más información, en la sección Inicio rápido , tienen muchos ejemplos de trabajo.
EDITAR:
Para su traducción de rizo específica:
fuente
'Accept-Charset': 'UTF-8'
Requests
es una dependencia adicional que necesita instalar y administrar. Para una solución simple usando solo la biblioteca estándar, consulte stackoverflow.com/a/13921930/111995Solo usa este sitio web . Convertirá cualquier comando curl en Python, Node.js, PHP, R o Go.
Ejemplo:
Se convierte en esto en Python,
fuente
¿tal vez?
si está intentando enviar un archivo
ahh gracias @LukasGraf ahora entiendo mejor lo que hace su código original
fuente
requests.json
archivo y no establece elContent-Type: application/json
encabezado; además, esto enviará unaGET
solicitud, no unPOST
.curl -d @<file>
leerá los campos para publicar<file>
, eso no es lo mismo que cargar archivos.data = requests.get(url).json
debería serdata = requests.get(url).json()
su implementación de Python sea como
verifique este enlace , ayudará a convertir el comando cURl a python, php y nodejs
fuente
Mi respuesta es WRT python 2.6.2.
Pido disculpas por no proporcionar los parámetros necesarios porque es confidencial.
fuente
Algunos antecedentes: busqué exactamente esta pregunta porque tenía que hacer algo para recuperar el contenido, pero todo lo que tenía disponible era una versión antigua de python con soporte SSL inadecuado. Si estás en una MacBook anterior, sabes de lo que estoy hablando. En cualquier caso,
curl
funciona bien desde un shell (sospecho que tiene un soporte SSL moderno vinculado), por lo que a veces desea hacer esto sin usarrequests
ourllib2
.Puede usar el
subprocess
módulo para ejecutarcurl
y obtener el contenido recuperado:El
subprocess
módulo de Python 3 también contiene.run()
varias opciones útiles. Se lo dejaré a alguien que realmente esté ejecutando Python 3 para que brinde esa respuesta.fuente
Esto podría lograrse con el enfoque del código psuedo mencionado a continuación
Importar solicitudes de importación de datos Data = os.execute (curl URL) R = Data.json ()
fuente