Necesito leer una URL de flujo como csv, entonces esto es lo que hago:
class Command(BaseCommand): help = 'Admin command to import feed' def _download_flow(self, url): req = requests.get(url, stream=True) if req.status_code == 200: tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".csv") for line in req.iter_lines(): tmp.write(line) return tmp raise Exception('error:{}'.format(req.status_code)) def handle(self, *args, **options): catalog = self._download_flow(options['url']) with open(catalog.name, 'rU') as csvfile: reader = csv.DictReader( csvfile, delimiter=';', quotechar='"') for row in reader: raise Exception(row) catalog.close()Básicamente, desde una url, creo un archivo csv temporal. Entonces, ahora quiero analizar este archivo para trabajar con líneas, pero no sé por qué no se genera mi excepción. (Mi archivo tiene contenido, lo he comprobado). ¿Tienes alguna pista para ayudarme?
Gracias
El problema provino del método _download(), la forma correcta de construir el archivo es:
def _download_flow(self, url): req = requests.get(url, stream=True) if req.status_code == 200: tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".csv") for chunk in req.iter_content(): tmp.write(chunk) return tmp raise Exception('error:{}'.format(req.status_code))