Ich habe bisher zu analysieren:clojure-csv.core mit einer großen CSV-Datei
(:require [clojure-csv.core :as csv])
(:require [clojure.java.io :as io]))
(def csv-file (.getFile (clojure.java.io/resource "verbs.csv")))
(defn process-csv [file]
(with-open [rdr (io/reader file)]
(csv/parse-csv rdr)))
Aber ich bin immer java.io.IOException: Stream closed
. Ich verwende clojure-csv und es stellt zwei Methoden, von denen die erste die ich benutze, parse-csv
, sagt der Doc:
Takes a CSV as a char sequence or string, and returns a lazy sequence of vectors of strings
Was ich glaube, ich weiß: with-open
faul ist, und die rdr
in (csv/parse-csv rdr)))
ist eine einzige Zeile der CSV-Datei richtig?
PS. Ich würde auch gerne die Datei durchsuchen, ist es teuer, die Datei immer wieder zu öffnen (obwohl sie faul gelesen wird) und den gesamten Inhalt zu durchsuchen?
Wie ich unten zeige, ist with-open nicht faul, aber parse-csv ist. parse-csv wird jeden Wert in der Eingabe csv träge zurückgeben, als eine faule Liste von Vektoren (ein Vektor pro Zeile). – noisesmith