You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure使用data.csv库如何实现数据追加写入CSV新行

Clojure data.csv 追加写入实现方法

write-csv本身不负责控制文件的写入模式,它的作用只是把传入的数据集按CSV格式写到你给定的writer流里。你现在每次写入都会覆盖原文件,问题出在创建writer的步骤:clojure.java.io/writer默认打开文件时会截断原有内容,走覆盖写入逻辑,要追加内容只需要在创建writer时打开追加开关即可。

修改后的可运行代码:

(require '[clojure.java.io :as io]
         '[clojure.data.csv :as csv])

(defn append-to-csv [file-path name]
  (with-open [writer (io/writer file-path :append true)]
    (csv/write-csv writer [[name 2]])))

踩坑提醒

  • 第一次生成CSV文件时如果需要写表头,不要开追加模式,单独调用一次写入逻辑写表头就行,后续新增行再用上面的追加方法。
  • 如果没法保证待追加的原CSV文件末尾自带换行,建议在写CSV内容前先往流里写一个换行符,避免新写入的行直接粘在原文件最后一行末尾导致格式错误,写法如下:
(defn append-to-csv [file-path name]
  (with-open [writer (io/writer file-path :append true)]
    (.write writer (int \newline))
    (csv/write-csv writer [[name 2]])))
  • write-csv支持的:newline参数只控制生成CSV时用LF(Unix风格换行)还是CR+LF(Windows风格换行),和追加写入逻辑没有关系,不要在这里找配置项。

内容的提问来源于stack exchange,提问作者Vinn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:33:22