如何在Julia中读取gzip压缩的CSV文件?

时间:2018-10-01 12:09:15

标签: julia

我尝试了很多库,但是似乎无法获取类型匹配的

典型尝试:

using SomeLib, CSV
fh = SomeLib.open("gzipped_file.gz")
CSV.read(fh) # error

示例:

using CodecZlib
CSV.read(GzipDecompressorStream(open("gzipped_file.gz")))
# ERROR: MethodError: no method matching position(::TranscodingStreams.TranscodingStream{GzipDecompressor,IOStream})

4 个答案:

答案 0 :(得分:5)

在此期间,您可以使用CSVFiles.jl:

using CSVFiles, DataFrames, FileIO

open("yourfile.csv.gz") do io
    load(Stream(format"CSV", GzipDecompressorStream(io))) |> DataFrame
end

答案 1 :(得分:0)

除了Bogumił的答案外,您还可以执行以下操作:

using CSV
using GZip

df = GZip.open("some_file.csv.gz", "r") do io
    CSV.read(io)
end

答案 2 :(得分:0)

更简单:

using CSVFiles, DataFrames
df = DataFrame(load(File(format"CSV", "data.csv.gz")))

答案 3 :(得分:0)

我的新软件包TableReader.jl支持透明的gzip,xz和zstd解压缩。因此,以下代码将按预期工作:

using TableReader

readcsv("path/to/file.csv.gz")
readcsv("path/to/file.csv.xz")
readcsv("path/to/file.csv.zst")