LINUX.ORG.RU

[lisp] работа с несколькими файлами

 


0

0

Прошу более опытных товарище пролить свет в тьму моего неведения

Имею я некий набор функций обрабатывающий некие объекты в переменной *draw* (допустим в ней хранится содержимое файла). Все вроде хорошо. ВНЕЗАПНО требуется открыть файликов не меньше сотни ну или десятка. Как тут быть? Предпологаю что вопрос банален и прошу ногами не бить, а помочь делом. Спасибо заранее

★★★★★

(dolist (fn (list "file1.dat" "file2.dat" "file3.dat" "file4.dat" ...)) (with-open-file (in fn nil) (process-file in)))

anonymous
()
Ответ на: комментарий от anonymous

(dolist (fn (list "file1.dat" "file2.dat" "file3.dat" "file4.dat" ...))
(with-open-file (in fn nil)
(process-file in)))

anonymous
()
(defmacro with-many-open-files ((var file-list) &body body)
  (let ((filespec (gensym)))
    `(let ((,var (loop :for ,filespec :in ,file-list
                       :collect (etypecase ,filespec
                                  ((or string pathname)
                                        (cons (pathname ,filespec)
                                              (open ,filespec)))
                                  (cons (cons (pathname (car ,filespec))
                                              (apply #'open ,filespec)))))))
       (unwind-protect
         (progn ,@body)
         (loop :for ,filespec :in ,var
               do (close (cdr ,filespec)))))))
;; filespec ::= "filename" | ("filename" &rest open-args)
anonymous
()

Благодарю всех. Буду читать и разбираться. Черт как оперативно...

bioreactor ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.