gpt4 book ai didi

csv - 如何迭代/流式传输 gzip 文件(包含单个 csv)?

转载 作者:行者123 更新时间:2023-11-29 08:16:10 25 4
gpt4 key购买 nike

如何迭代包含单个文本文件 (csv) 的 gzip 文件?

搜索 crates.io 我找到了 flate2其中解压代码如下:

extern crate flate2;

use std::io::prelude::*;
use flate2::read::GzDecoder;

fn main() {
let mut d = GzDecoder::new("...".as_bytes()).unwrap();
let mut s = String::new();
d.read_to_string(&mut s).unwrap();
println!("{}", s);
}

如何流式传输 gzip csv 文件?

最佳答案

对于流 io 操作,rust 有 ReadWrite特质。要按行迭代输入,您通常需要 BufRead trait,你总是可以通过在 BufReader::new 中包装一个 Read 实现来获得它.

flate2 已经具备这些特征; GzDecoder 实现了 Read,而 GzDecoder::new 接受了任何实现了 Read 的东西。

解码 stdin 的示例(当然在 playground 上效果不佳):

extern crate flate2;

use std::io;
use std::io::prelude::*;
use flate2::read::GzDecoder;

fn main() {
let stdin = io::stdin();
let stdin = stdin.lock(); // or just open any normal file

let d = GzDecoder::new(stdin).expect("couldn't decode gzip stream");

for line in io::BufReader::new(d).lines() {
println!("{}", line.unwrap());
}
}

然后你可以用你通常的(“没有gzip”)逻辑解码你的行;也许通过采用任何输入实现 BufRead 使其通用。

关于csv - 如何迭代/流式传输 gzip 文件(包含单个 csv)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47048037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com