He estado mirando alrededor por unos días ahora y no puedo resolver esto. Básicamente, estoy cargando una imagen en un servidor y obtengo una ID a cambio, el problema es que no puedo averiguar cómo extraer esta ID y cambiarla en una Cadena lista para guardarla en una base de datos.
Código de progtwig
url = with open("image.jpg", "rb") as image_file: files = {'file': image_file} auth = ('', '') r = requests.post(url, files=files, auth=auth) data = r.json() uploaded = data.get('uploaded') content_id = uploaded[0] print r print r.text print '--------------' print str(content_id)
Y aquí está la salida que obtengo.
{ "status": "success", "uploaded": [ { "filename": "image.jpg", "id": "6476edfa1d262ad81181d992da78149d" } ] } -------------- {u'id': u'6476edfa1d262ad81181d992da78149d', u'filename': u'image.jpg'}
Usted está recibiendo JSON; ya usaste el método response.json()
para decodificar eso a una estructura de Python:
data = r.json()
Puede tratar los data['uploaded']
como cualquier otra lista de Python; el contenido es solo un diccionario, así que otra clave del diccionario para obtener el valor de id
:
data['uploaded'][0]['id']
Es seguro codificar el índice a [0]
aquí, ya que sabe cuántas imágenes ha cargado.
Podría usar el manejo de excepciones para detectar si se devolvió algo inesperado:
try: image_id = data['uploaded'][0]['id'] except (IndexError, KeyError): # key or index is missing, handle an unexpected response log.error('Unexpected response after uploading image, got %r', data)
o usted podría manejar los data['status']
; todo depende de la semántica exacta de la API que está utilizando aquí.