Most of the time when I read in CSV data I use local variables:
(defun do-something ()
...
(let ((thing (read-csv #P"~/Desktop/file.csv")))
.... do stuff with thing))
This works. However, some of my functions are becoming quite large and messy. So I tried putting the function to read in data in a special variable:
(defparameter *file* (read-csv #P"~/Desktop/file.csv"))
But when I use the *file*
variable, it doesn't update with the new file.csv.
Is there a way to force refresh or maybe a better way of extracting CSV data in real time?
CodePudding user response:
As a variable, *file*
is initialized from the result of read-csv
function. So unless you setf
*file*
again from read-csv
it will not update.
If the path doesn't change you could wrap read-csv
into another function like:
(defun retrieve-csv-data ()
(read-csv #P"~/Desktop/file.csv"))
And use that where ever you need the csv data.