Elisp:如何将数据保存在文件中?

2024-02-05

我想将数据保存到我的 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(使用前将#替换为@)

Elisp:如何将数据保存在文件中? 的相关文章

  • Elisp 交互功能,具有输入历史记录

    有很多交互式函数将字符串输入作为参数 defun zb run cmd X arg1 argN interactive Marg1 Marg2 some logic 如何制作每个这样的功能zb run cmd 1 zb run cmd N
  • 在集合字段更改时触发 JPA 侦听器

    我正在使用 EntityListeners PreUpdate 在我的实体发生变化时执行某些操作 但是我注意到实体内集合的更改不会触发 JPA 实体侦听器 这是有道理的 因为包含实体的表没有更改 但多对多表却更改了 有没有办法让实体侦听器在
  • 是否可以让 emacs 将 fn 键解释为修饰键?

    是否可以让 emacs 将 fn 键解释为修饰键 我可以绑定f6 f ex吗 超 我有这个 setq ns function modifier hyper set Mac s Fn key to type Hype 并尝试这样做 setq
  • 如何管理 Workflow Foundation 中的版本?

    当您有长时间运行的工作流并且持久性存储中可能同时有两个或三个版本并且必须能够访问所有版本时 如何管理 WF 中的工作流版本 我撰写了一系列 4 篇博客文章 涵盖了对长期运行的工作流程进行版本控制时需要注意的大部分内容 我倾向于避免的一件事是
  • 在 emacs 中创建别名?

    我有一个 emacs 副本 可以从拇指驱动器在几台不同的 Windows 计算机上使用 我想知道是否可以在 emacs 中创建类似于 bash 别名或符号链接的东西 我可以在 find file 中使用的东西是我正在寻找的主要内容 例如 C
  • 对于 Emacs,如何将 view-lossage 收集的内容存储到外部文件中?

    对于 Emacs 我如何存储内容view lossage收集到外部文件中 理想情况下 我希望将这些击键数据自动增量地存储到外部日志文件中 这意味着在 Emacs 启动时默认情况下会这样做 至少在 Emacs 24 中 我现在无法检查之前的版
  • 在相对较大的应用程序中应该如何使用实体管理器管理数据库事务?

    我使用 MYSQL 数据库和 Swing 应用程序框架以及 javax persistence 开发了一个相当大的 CRUD 应用程序 我的问题是 在给定 javax persistence Entitymanager 的情况下 我应该如何
  • 如何在 PHP 中的会话中存储对象?

    您好 我想使用类似的类在会话中存储或保存对象SessionHandler或数组 SESSION 我已经看到如果我序列化该对象是可能的 并且我不想丢失该对象实例的方法 我已经看到序列化是可能的 但我想要存储的对象是由 PDOStatement
  • 将 CSV 导入组织模式属性

    我想将 CSV 导入组织模式 其他人已经询问过如何将 CSV 导入组织模式表 这不是我想做的 我需要将 CSV 导入到组织模式属性 例如 像这样的 CSV Name Tel Mobile Fax John 11111 22222 33333
  • Emacs 关于 python 模式函数的默认提示

    在 python 模式下 有一个名为 py execute region 的函数 它将突出显示的代码区域发送到 Python 缓冲区进行评估 评估后 光标位于 Python 缓冲区中 但我希望它保留在脚本缓冲区中 以便我可以继续生成更多代码
  • Emacs lisp:将字符翻译为标准 ASCII 转录

    我正在尝试编写一个函数 将包含 unicode 字符的字符串转换为某种默认的 ASCII 转录 理想情况下 我想要例如 ngstr m成为Angstroem或者 如果不可能的话 Angstrom 同样地 应该成为a x c 或类似的 Ema
  • emacs中如何删除重复行

    我的文本有很多行 我的问题是如何删除 emacs 中的重复行 在没有外部实用程序的情况下使用 emacs 或 elisp 包中的命令 例如 this is line a this is line b this is line a 删除第三行
  • 修改功能;保存到 Lisp 中的新函数

    所以我认为 lisp 在其他语言中 的优点之一是它能够实现函数工厂 接受函数作为参数 返回新函数 我想使用此功能对函数进行小的更改并将其保存为新函数 这样如果对原始函数进行更改 它们也会反映在它所基于的新函数中 注意 我不是编写原始函数的人
  • 如何在组织模式议程树视图中显示条目的完整上下文

    在组织模式的每日 每周议程视图中 有没有办法显示条目的完整上下文 我对代码的解读是 它找到时间戳上方的第一个标题并显示它 然而 就我而言 该标题通常有 3 4 层深度 如果没有上面的项目符号 就没有意义 似乎也没有办法可以轻松改变这一点 过
  • Emacs:当光标位于右括号时匹配括号

    之前有人问过 Emacs 当光标位于其上时突出显示匹配的括号 而不是其后 https stackoverflow com questions 16399530 emacs highlight matching paren when curs
  • elisp:从内部函数捕获变量

    我可爱的功能 defun f x lambda y x y 然后 我期望这样 funcall f 2 2 返回 4 但是可惜 我得到了这个 Debugger entered Lisp error void variable x 那么如何从内
  • 有没有办法从 EntityManager 获取所有托管实体

    我正在设置一个基本的测试数据实用程序 并希望跟踪 EntityManager 处理的所有数据 有没有一种方法可以一次性获取 EntityManager 管理的所有内容 而不是仅仅为每个实体提供一堆列表 所以代替这个 EntityManage
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • 在 Emacs 中,如何更改迷你缓冲区完成列表窗口?

    我想为迷你缓冲区完成列表设置一个特定的窗口 目前 我有 3 个窗口采用此配置 在这种情况下 我想使用左下窗口作为迷你缓冲区完成列表 目前 它似乎是随机的一个窗口 大多数时候它喜欢使用最右边的窗口 它太薄了 无法在我不必水平滚动的情况下显示完
  • FetchType.LAZY 不适用于休眠中的 @ManyToOne 映射

    简而言之 我的 Child 类与 Parent 类之间存在多对一的关系 我想加载所有的孩子 而不必加载他们的父母详细信息 我的孩子班级是 Entity public class Child implements Serializable I

随机推荐

  • 这怎么可能:在 WaitOne 中处理 OnPaint

    我有一个ManualResetEvent 有一次 我使用等待该事件WaitOne 令我惊讶的是 我收到了一份OnPaint事件 而在WaitOne 这种情况也经常发生 堆栈跟踪如下所示 我明白了WaitOne会阻塞当前线程 并且在事件触发之
  • 如果Android中的应用程序被强制关闭,如何重置警报

    如果出现以下情况 我的应用程序使用 AlarmManager 设置的警报将被清除 用户在设置中强制关闭我的应用程序 一些任务杀手应用程序自动终止了我的应用程序进程 Android 本身杀死了我的应用程序 因为前端应用程序需要内存 请告诉我如
  • F# XML 多行文档,Visual Studio 2017

    我想添加一个多行 XML 文档 当我的鼠标悬停在它上面时 该文档将出现在 Intelli Sense 气泡中 参见示例 当我使用 Visual Studio 2015 时 以下代码可以工作 请参见下面的屏幕截图 但现在当我使用 Visual
  • 预加载组件

    在工作中 我们使用 DevExpress 作为用户界面 第一次打开使用 DevExpress 控件的表单时 会出现很长的暂停 在某些客户端上有时会出现 15 20 秒 在 Visual Studio 中 我可以看到该阶段正在加载大量程序集
  • CSS3可计算表达式?

    是否有任何技术允许在 css3 语句中使用表达式 通常 做以下事情是有帮助的 width 35 20px或类似的 目前 针对这些情况 我唯一的解决方案是重新设计页面或使用 javascript 动态设置 css CSS 关于值和单位的工作草
  • 调试类型初始值设定项中的异常

    我有一个静态类 没有静态构造函数 但有许多静态成员 第一次使用该类时 我抛出 TypeInitializationException 我正在打破 CLR 异常 并且已禁用 仅我的代码 问题是我只有在第一次使用这个类时才会得到这个异常 我不会
  • 如何在 ASP.NET MVC 5 中插入主从表

    I have Orders表和订单详细信息数据库中的表 通过 Entity Framework 6 我获得了一个模型 因此我可以从它生成类 我还从 Orders 表生成了控制器和视图 Orders folio PK date custome
  • ssl_transport_security.cc:599] 无法加载任何根证书

    我尝试使用 hyperledger composer fabric v0 19 0 创建自己的网络 网络构建似乎不错 但是当我执行composer network install 我收到这个错误 Composer Install Insta
  • 在 Spring 中使用 RestTemplate。异常 - 没有足够的变量可用于扩展

    我正在尝试访问 API 的内容 并且需要使用 RestTemplate 发送 URL String url1 http api example com Search key 52ddafbe3ee659bad97fcce7c53592916
  • XPath 在两个 HTML 注释之间进行选择?

    我有一个很大的 HTML 页面 但我想使用 Xpath 选择某些节点 div some text div div p Some more elements p div 我可以在之后选择 HTML using comment begin co
  • ImageView setImageBitmap 在 onTouch 内的复杂布局中间歇性地不执行任何操作

    我有内部包含 ImageView 的嵌套布局 这些都在 ScrollView 内 最初 ImageView 被设置为 Drawable 资源 我用这个解决方案来检测卷轴 它是从内部调用的onTouchListener Android 检测
  • openssl 命令行验证签名

    您好 我已经生成了密钥对并使用私钥生成签名 openssl rsautl sign in helloworld txt inkey aa pem out sig 但是我无法使用我的公钥验证签名 openssl rsautl verify i
  • Open XML: Word - 将所有段落标记为“Heading1”样式

    我使用Word 创建了一个带有标准normal dot 的Docx 作为测试 Hello world 级别的复杂性 我希望得到all the paragraphs其样式为 Heading1 style在Word中 我可以获取所有段落 但不知
  • 如何在 SQL Server 查询中显示表结构?

    SELECT DateTime Skill Name TimeZone ID User Employee Leader FROM t Agent Skill Group Half Hour AS t 我需要在查询中查看表结构 对于 SQL
  • numpy 数组中负数的立方根返回 nan

    来自 Numpy 文档 gt gt gt a np arange 10 3 gt gt gt a array 0 1 8 27 64 125 216 343 512 729 gt gt gt a 2 8 gt gt gt a 2 5 arr
  • 如何在php中将unicode字符转换为阿拉伯字符?

    假设该字符串是 uni str 06280628002006280628 阿拉伯语是 bab bab 那么 我如何在不使用 html 的情况下将其转换为 php for i 0 i
  • UnsupportedOperation:无法执行非零相对端搜索:Python - PyPDF2

    你们能解决这个问题吗 我无法阅读阿拉伯语 PDF 文件 我不知道是什么问题 谢谢 import PyPDF2 def main with open arabic text pdf encoding utf 8 as pdfFile pdfR
  • C++ 指向非静态成员函数的指针

    我读过很多关于非静态成员函数指针的帖子和答案 但看起来没有一个能够解决我的问题 因此 我创建了一个简短的示例来复制我的问题 即使这个示例可以以不同的方式 解决 对于最终的软件来说 保持示例中的结构很重要 谢谢 这是 Funcs h 类的标头
  • 在使用 flutter_bloc 库调度事件之前等待一些结果

    我正在尝试创建一个 BLOC 它依赖于另外两个基于时间的块和一个非基于时间的块 我的意思是基于时间 例如他们正在连接远程服务器 因此需要时间 它的工作原理如下 登录 当然需要一些时间 如果登录成功 做另一个过程 这也需要时间 它返回一个未来
  • Elisp:如何将数据保存在文件中?

    我想将数据保存到我的 elisp 程序中的文件中 我有一个多维列表 我想将其保存到文件中 以便下次程序运行时可以恢复它 最简单 最好的方法是什么 当然 我意识到我可以简单地将数据以自定义格式写入缓冲区 然后保存缓冲区 但是当我想要恢复数据格