Elisp: Как сохранить данные в файле?

Я хочу сохранить данные в файл в моей elisp программе. У меня есть многомерный список, который я хочу сохранить в файл, таким образом, я могу восстановить его в следующий раз мои прогоны программы. Каково самое легкое / лучший способ сделать это?

Я понимаю, конечно, что могу просто записать свои данные в буфер в пользовательском формате и затем сохранить буфер, но тогда я должен был бы записать функцию для парсинга того формата данных, когда я хочу восстановить его. Я не должен делать этого.

В Python существует модуль Рассола, который позволяет Вам "вывести" объекты к диску и восстановить их, очень легко. Действительно ли там что-то подобно для elisp?

14
задан Enfors 23 February 2010 в 21:34
поделиться

1 ответ

Эта подпрограмма ' dump-vars-to-file создаст некоторые выражения, которые можно прочитать, просто вычислив выражения позже (через команда 'load или ' read ):

(defun dump-vars-to-file (varlist filename)
  "simplistic dumping of variables in VARLIST to a file FILENAME"
  (save-excursion
    (let ((buf (find-file-noselect filename)))
      (set-buffer buf)
      (erase-buffer)
      (dump varlist buf)
      (save-buffer)
      (kill-buffer))))

(defun dump (varlist buffer)
  "insert into buffer the setq statement to recreate the variables in VARLIST"
  (loop for var in varlist do
        (print (list 'setq var (list 'quote (symbol-value var)))
               buffer)))

Я уверен, что мне не хватает какой-то встроенной подпрограммы, которая выполняет более приятную работу или является более гибкой.

Я протестировал это с помощью этой небольшой процедуры:

(defun checkit ()
  (let ((a '(1 2 3 (4 5)))
        (b '(a b c))
        (c (make-vector 3 'a)))
    (dump-vars-to-file '(a b c) "/some/path/to/file.el")))

Что произвело вывод:

(setq a (quote (1 2 3 (4 5))))
(setq b (quote (a b c)))
(setq c (quote [a a a]))

Для получения дополнительной информации см. Информационную страницу о чтении и печати объектов lisp

14
ответ дан 1 December 2019 в 13:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: