Clojure 如何逐行写入EDN?(spit,散列图序列)
我有这样的数据Clojure 如何逐行写入EDN?(spit,散列图序列),clojure,writefile,line-by-line,Clojure,Writefile,Line By Line,我有这样的数据 tab = ({"123" data} {"456" data} ... {"123" data}{"456" data} (不管怎样,这是一个懒散的hashmaps序列) 我想把它逐行写入edn文件,所以我这样做了 (map (fn[x] (spit "test.edn" x :append true)) tab) 问题是,我希望在文件中包含以下内容: {"123" data} {"456" data} 但它似乎是这样附加的 tab = ({"123" data} {
tab = ({"123" data} {"456" data} ...
{"123" data}{"456" data}
(不管怎样,这是一个懒散的hashmaps序列)
我想把它逐行写入edn文件,所以我这样做了
(map (fn[x] (spit "test.edn" x :append true)) tab)
问题是,我希望在文件中包含以下内容:
{"123" data}
{"456" data}
但它似乎是这样附加的
tab = ({"123" data} {"456" data} ...
{"123" data}{"456" data}
有办法解决这个问题吗?
我想我必须添加“换行符”,但我不知道怎么做,因为输入不是字符串
谢谢 对不起,我终于找到了,希望它能帮助一些人,因为我没有在网上找到它(我的意思是没有简单的答案)
下午好。对不起,我终于找到了,希望它能帮助一些人,因为我没有在网上找到它(我的意思是没有简单的答案)
(doseq [x tab]
(spit "test.edn" (prn-str x) :append true))
下午好
(doseq [x tab]
(spit "test.edn" (prn-str x) :append true))
因此,对于选项卡
中的每个项目,将其转换为可读字符串,后跟换行符,然后将该字符串附加到test.edn
出于以下几个原因,您不应为此使用map
:
map
是惰性的,因此除非强制执行,否则不会打印整个序列map
保留序列的头部,这只会在此处浪费内存选项卡
中的每个项目,将其转换为可读字符串,后跟换行符,然后将该字符串附加到test.edn
出于以下几个原因,您不应为此使用map
:
map
是惰性的,因此除非强制执行,否则不会打印整个序列map
保留序列的头部,这只会在此处浪费内存您应该使用
pr str
,而不仅仅是str
。例如,它可以与nil
正常工作。doseq更好,因为spit是一种副作用功能。您应该使用pr str
,而不仅仅是str
。例如,它可以与nil
正常工作。doseq更好,因为spit是一种副作用。谢谢!我还没有试过,因为我的东西正在工作,但我会看看我的最终计划何时能改进!谢谢我还没有试过,因为我的东西正在工作,但我会看看我的最终计划何时能改进!