将 clojure 映射/数组写入文件并读回

2024-03-21

我需要将 clojure 映射保存到文件中并稍后读回以处理它们。

这就是我能想到的。有没有更好的方法来完成同样的事情?

user=> (def my-data (for [ a [ "Person1" "Person2" ]  b [ "Address1" "Address2"]  c   (range 10) ] {:name a :address b :index c} ))
#'user/my-data
user=> (count my-data)
40

user=> (defn write-data[xs] (with-open [wrtr (clojure.java.io/writer "my-data.txt") ]
              (doall (map #(.write wrtr (str % "\n")) xs))))
#'user/write-data

user=> (write-data my-data)

user=> (defn read-data[] (with-open [rdr (clojure.java.io/reader "my-data.txt") ]
            (doall (map #(load-string %) (line-seq rdr)))))
#'user/read-data

user=> (count (read-data))
40

从文件中读取单个表单是最简单的,因此我通常将数据放入向量中。 我也更喜欢使用 pr 或pr-str而不是打印,因为它保证产生可读的数据,

(def my-data [{:a "foo" :b [1 2 3]} "asdf" 42 #{1 2 3}]) 
(spit "/tmp/data.edn" (with-out-str (pr my-data)))
nil
(read-string (slurp "/tmp/data.edn"))
[{:a "foo", :b [1 2 3]} "asdf" 42 #{1 2 3}] 

vs:

(spit "/tmp/data.edn" (with-out-str (print my-data)))
(read-string (slurp "/tmp/data.edn"))
[{:a foo, :b [1 2 3]} asdf 42 #{1 2 3}] 

请注意字符串“asdf”是如何作为符号读回的。

.toString也工作正常:

(spit "/tmp/data.edn" (.toString my-data)) 
(read-string (slurp "/tmp/data.edn"))
[{:a "foo", :b [1 2 3]} "asdf" 42 #{1 2 3}] 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 clojure 映射/数组写入文件并读回 的相关文章

随机推荐

  • 检查函数是否被修饰

    我正在尝试在类方法中构建一个控制结构 该方法将函数作为输入 并且如果函数被修饰或未修饰 则具有不同的行为 关于如何构建函数的任何想法is decorated其行为如下 def dec fun do decoration def func d
  • 具有多重联接、计数和左联接的 SQL 到 LINQ

    我用多个语句编写了这个 SQL 请求JOIN 包括一个LEFT JOIN 它给了我预期的结果 SELECT DISTINCT c Id c Title COUNT v Id AS Nb V2 COUNT DISTINCT v IdUser
  • WPF 绑定 StringFormat 短日期字符串

    我想在 WPF 中使用短日期命名字符串格式 我尝试过类似的事情
  • 在 Protractor 中使用 jasmine-reporters 时无法生成报告

    我在配置中使用了以下代码 var jasmineReporters require jasmine reporters onPrepare function browser driver manage window maximize bro
  • 如何使用 NSManagedObject 的新 fetchRequest 函数发出获取请求?

    在 iOS 10 中 CoreData 团队向 NSManagedObject 添加了新的 fetchRequest 方法 它看起来像这样 public class func fetchRequest gt NSFetchRequest
  • 使用 Apache WSGI 通过 DJANGO_SETTINGS_MODULE 环境变量设置 Django 设置文件

    如何仅通过 Apache WSGI 启动时更改 Django 使用的设置文件DJANGO SETTINGS MODULE环境变量 The Django 文档 https docs djangoproject com en 1 6 howto
  • WScript Sendkeys 不接受 Unicode 字符

    我正在尝试使用 WScript Sendkeys 发送字符 似乎它不起作用 我找到了一个帖子VBscript 的 SendKeys 是否支持 Unicode https stackoverflow com questions 3198574
  • 异步加载 BitmapSource 图像时出现内存泄漏

    我有一些图像正在加载到 WPF 应用程序的列表框中 最初我使用 GDI 来调整图像大小 原始图像占用太多内存 这很好 只是每张图像花费了大约 400 毫秒的时间 不太好 因此 在寻找另一个解决方案时 我找到了一种使用 Transformed
  • 如何使用dotnet在linux上生成资源文件

    在 Windows 上 我们可以使用 Resgen exe 从 txt 文件生成 resources 文件 在 Linux 上 我如何使用 NET Core 实现相同的效果 None
  • Google Analytics 双重列表(带和不带正斜杠)

    我们在 Google Analytics 中的大多数网址都出现了双重列表 如下所示 Home Specials Home Specials 该网站基于 MS MVC3 第一个通常显示加载期很短 退出率几乎为零 大多数真实用户数据位于第二个
  • 原则 2 的 GIS 扩展

    我想为我的 Doctrine 2 项目编写一个 GIS 地理空间数据 扩展 我知道如何编写简单的自定义函数和类型 为了适应MySQL特殊的存储格式 我在检索 存储数据时需要使用一些SQL函数 GeomFromWKB 和AsBinary 我找
  • 是否可以在将身份字段值保存到实体框架之前获取它

    我有一个客户和销售表 CUSTOMER Id int auto increment Name SALES Id int auto increment CustomerId int OrderTotal decimal 有了Guid我就可以做
  • 在 wampserver 上安装 PEAR

    在 wampserver 上安装 PEAR 的所有指南 例如交响乐指南 http trac symfony project org wiki HowToInstallPearOnWindowsWithWamp 假设我要在某个 PEAR 目录
  • 分布式序列号生成?

    我一般都实现了序列号生成过去使用数据库序列 例如使用 Postgres SERIAL 类型http www neilconway org docs sequences http www neilconway org docs sequenc
  • 如何在渲染前使用 setState 更新状态

    我将在序言中声明我是 React js 的初学者 我创建了一个我正在开发的项目示例 在该项目中 我在 componentDidMount 中调用 API 并获取对象数组 并将其设置为状态 它看起来是这样的 class App extends
  • 如何将@request注入到服务中?

    当我尝试将 request 注入到我的任何服务中时 我收到此异常 ScopeWideningInjectionException 检测到范围扩大注入 定义 service navigation 引用服务 request 属于比较窄的范围 一
  • 如何在多个 Angular 组件之间共享 api 响应?

    我试图把我的头绕过去并使用BehaviourSubject在 Angular 中 到目前为止还没有太多运气 我的目标是在我的组件之间共享 api 请求响应 这是我的项目的 stackblitz 设置 https stackblitz com
  • 在 Tomcat 中打开新线程

    我只是问理论问题 我有一个需要一段时间的操作 该操作是在某些 Servlet doGet doPost 方法或 Spring MVC 控制器内部执行的 打开新的后台线程并在那里执行是个好主意吗 不会导致性能问题吗 如果我在这种情况下使用 j
  • 通过 VPN 的 Python 请求给出 502 Bad Gateway

    我正在尝试使用以下命令从公司网络内的服务器获取一些数据requests图书馆 我使用 VPN 进入公司网络 并且还设置了公司代理 我尝试访问的地址仅在该公司网络内可见 import requests url http some privat
  • 将 clojure 映射/数组写入文件并读回

    我需要将 clojure 映射保存到文件中并稍后读回以处理它们 这就是我能想到的 有没有更好的方法来完成同样的事情 user gt def my data for a Person1 Person2 b Address1 Address2