Quiero leer el contenido de un archivo en una lista. Algunos de mis intentos han sido hasta ahora -¿Cómo puedo leer el contenido de un archivo en una lista en Lisp?
(defun get-file (filename)
(let ((x (open filename)))
(when x
(loop for line = (read-line x nil)
while line do (list line)))
(close x)))
(defun get-file (filename)
(let ((x (open filename :if-does-not-exist nil)) (contents (list nil)))
(when x
(loop for line = (read-line x nil)
while line do (cons contents line)))
(close x) contents))
(defun get-file (filename)
(let ((x (open filename :if-does-not-exist nil)) (contents nil))
(when x
(loop for line = (read-line x nil)
while line do (append contents line)))
(close x) contents))
Ninguno de ellos funcionó. ¿Alguien puede decirme una manera? O mejor aún: ¿cómo poner todos los contenidos en una matriz?
(con-open-file (f nombre de archivo) ¿Por qué tiene un nombre de archivo antes de f allí? ¿Qué hace la línea colectora? ¿Y cómo colabora con while line al final? – Sterling
'with-open-file' abre el archivo llamado' filename' y asocia la secuencia con 'f'. 'collecting' recoge los diversos valores de' line' en una lista, hasta que 'while' es' nil'. ¡Common Lisp HyperSpec y Practical Common Lisp son tus amigos! –
En otras palabras, 'with-open-file' hace todo el trabajo de' abrir' y 'cerrar' y' let'. –