Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

395
Vistas
Escribir un archivo CSV de forma asíncrona en Python

Estoy escribiendo un archivo CSV con la siguiente función:

 import csv import os import aiofiles async def write_extract_file(output_filename: str, csv_list: list): """ Write the extracted content into the file """ try: async with aiofiles.open(output_filename, "w+") as csv_file: writer = csv.DictWriter(csv_file, fieldnames=columns.keys()) writer.writeheader() writer.writerows(csv_list) except FileNotFoundError: print("Output file not present", output_filename) print("Current dir: ", os.getcwd()) raise FileNotFoundError

Sin embargo, como no se permite la espera sobre el método writerows , no se escriben filas en el archivo CSV.
Cómo resolver este problema? ¿Hay alguna solución disponible?
Gracias.
El código completo se puede encontrar aquí .

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

En mi opinión, es mejor no intentar usar los aiofiles con el módulo csv y ejecutar el código síncrono usando loop.run_in_executor y esperarlo de forma asíncrona como se muestra a continuación:

 def write_extract_file(output_filename: str, csv_list: list): """ Write the extracted content into the file """ try: with open(output_filename, "w+") as csv_file: writer = csv.DictWriter(csv_file, fieldnames=columns.keys()) writer.writeheader() writer.writerows(csv_list) except FileNotFoundError: print("Output file not present", output_filename) print("Current dir: ", os.getcwd()) raise FileNotFoundError async def main(): loop = asyncio.get_running_loop() await loop.run_in_executor(None, write_extract_file, 'test.csv', csv_list)
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes usar aiocsv . Aquí hay un ejemplo rápido de cómo escribir una fila en un archivo CSV de forma asíncrona:

 import asyncio import aiofiles from aiocsv import AsyncWriter async def main(): async with aiofiles.open('your-path.csv', 'w') as f: writer = AsyncWriter(f) await writer.writerow(['name', 'age']) await writer.writerow(['John', 25]) asyncio.run(main())

Para ver más ejemplos, siga: https://pypi.org/project/aiocsv/

over 4 years ago · Santiago Trujillo Denunciar

0

Puedes usar aiofiles, solo tienes que convertir el dict en una fila :)

 import aiofiles async def write_extract_file( output_filename: str, csv_list: list ): cols = columns.keys() async with aiofiles.open(output_filename, mode='w+') as f_out: await f_out.write(','.join(cols)+'\n') for data in csv_list: line = [] for c in cols: line.append(str(data[c]) if c in data else '') line = ','.join(line) + '\n' await f_out.write(line)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda