Escribir CSV con Django

Para escribir archivos, se usa el mismo esquema que los códigos anteriores, pero se deben de abrir los archivos en modo escritura y usar la función de writer() en lugar de la de reader(); también es importante señalar, que el archivo a escribir no tiene que existir (en el siguiente ejemplo, para evitar eliminar el archivo anterior, se coloca al archivo a referenciar como “Libro2”):

def csv_write(request):
    filename="documents/Libro2.csv"
    try:
        file = open(filename, 'w', newline="")
        #print(type(file))
        csv_writer = csv.writer(file, delimiter=",")
        # print(type(csv_writer))

        csv_writer.writerow(["Movie 1","Movie 2", "Movie 3"])
        csv_writer.writerow(["Avengers","Batman", "Superman"])
        csv_writer.writerow(["Avengers 3","Batman 2", "Other"])
        csv_writer.writerow(["Avengers 4","Batman", "Spiderman"])

        file.close()
    except (IOError) as error:
        print("Error {}".format(error))
    
    return render(request, 'csv.html')

Al estar en modo escritura, se debe de presentar una estructura la cual queremos replicar en el archivo; es este caso, serían listas, que como vimos en los ejemplos de lectura, son los formatos devueltos al momento de leer los archivos.

Para escribir una lista, se usa la función de writerow(), también puedes usar la de writerows() para escribir múltiples listas:

data=[
    ["Name","Surname","Age"],
    ["Jon","Snow",33],
    ["Daenerys","Targaryen",25],
    ["Tyrion","Lannister",40],
    ["Jaime","Lannister",35],
    ["Cersei","Lannister",36]
]

writer.writerows(data)

También se usa la opción de newline como un vacío, con esto, evitamos que cuando se vaya a escribir una nueva columna, coloque un espacio entre registros; sin definir el newline:

Movie 1;Movie  2;Movie  3

Avengers;Batman;Superman

Avengers 3;Batman 2;Other
Definiendo el newline:
Pelicula 1;Pelicula 2;Pelicula 3
Avengers;Batman;Superman
Avengers 3;Batman 2;Otro
Su ruta:
csvs\urls.py
urlpatterns = [
    // ***
    path(csv_write, views.csv_write),

Y tendremos como salida, un archivo con el formato que especificamos anteriormente:

documents\Libro2.csv

Pelicula 1;Pelicula 2;Pelicula 3
Avengers;Batman;Superman
Avengers 3;Batman 2;Otro
Avengers 4;Batman;Spiderman

- Andrés Cruz

In english

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.