我想将数据保存到我的 elisp 程序中的文件中。我有一个多维列表,我想将其保存到文件中,以便下次程序运行时可以恢复它。最简单/最好的方法是什么?
当然,我意识到我可以简单地将数据以自定义格式写入缓冲区,然后保存缓冲区,但是当我想要恢复数据格式时,我必须编写一个函数来解析该数据格式。我宁愿不必这样做。
在 Python 中,Pickle 模块可以让您非常轻松地将对象“转储”到磁盘并恢复它们。 elisp 有类似的东西吗?
This '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 对象 http://www.gnu.org/s/emacs/manual/html_node/elisp/Read-and-Print.html#Read-and-Print
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)