5  Sistema de ficheros

Autor/a

Iraitz Montalbán

Como en todo lenguaje de programación, deberemos gestionar la lectura y escritura de ficheros. El sistema de ficheros lo gestiona el sistema operativo de nuestra máquina con lo que se trata más bien de interactuar con este al menos de cara a conocer por ejemplo, dónde estamos ubicados.

dirname(@__FILE__)
"/home/runner/work/ciencia-datos-julia/ciencia-datos-julia/parts/firststeps"

Podemos crear carpetas de forma programática pero en la mayoría de casos se tratará de leer y escribir ficheros en rutas concretas. Para ello nos será útil la función joinpath que nos ayuda a conformar rutas tal y como el sistema de ficheros requiere.

root = dirname(@__FILE__)
joinpath(root, "ejemplo.txt")
"/home/runner/work/ciencia-datos-julia/ciencia-datos-julia/parts/firststeps/ejemplo.txt"

Y como vimos anteriormente, usar la función readlines() para leer su contenido.

fichero = joinpath(root, "ejemplo.txt")
readline(fichero)
"Hola desde un fichero!"

Imaginemos por tanto que queremos descargarnos un CSV (Comma Separated Value) con información sobre los pasajeros del Titanic

using Downloads

fichero_url = "https://raw.githubusercontent.com/datasciencedojo/datasets/refs/heads/master/titanic.csv"
fichero = Downloads.download(fichero_url)
readlines(fichero)[:20]
"19,0,3,\"Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)\",female,31,1,0,345763,18,,S"

Si queremos conservar el fichero para más adelante podemos recurrir a la función write() y guardarlo donde nosotros queramos.

write("../../data/titanic.csv", read(fichero))
60302

Y podemos revisar el contenido iterando sobre walkdir() que recorre los elementos de un directorio.

itr = walkdir("../../data/")
(root, dirs, files) = first(itr)
("../../data/", String[], [".gitkeep", "titanic.csv", "titanic.json", "titanic.parquet"])

Disponemos de los comandos más usuales a la hora de crear un directorio (mkdir()) o adentrarnos en él (cd()). Tenéis más detalle sobre los comandos disponibles aquí.