dr/src/io.rs

42 lines
1.1 KiB
Rust
Raw Normal View History

2022-11-20 01:34:04 +01:00
use polars::frame::DataFrame;
use polars::prelude::*;
2022-11-20 23:00:58 +01:00
use std::fs;
2022-11-20 01:34:04 +01:00
use std::io;
use std::io::Read;
/// Read CSV format from stdin and return a Polars DataFrame
pub fn load_csv_from_stdin() -> DataFrame {
let mut buffer = String::new();
let _res: () = match io::stdin().read_to_string(&mut buffer) {
Ok(_ok) => (),
Err(_e) => (),
};
let cursor = io::Cursor::new(buffer.as_bytes());
let df = match CsvReader::new(cursor).finish() {
Ok(df) => df,
Err(_e) => DataFrame::default(),
};
df
}
/// Take a Polars Dataframe and write it as CSV to stdout
pub fn dump_csv_to_stdout(df: &mut DataFrame) {
let _res: () = match CsvWriter::new(io::stdout().lock()).finish(df) {
Ok(_ok) => (),
Err(_e) => (),
};
}
2022-11-20 23:00:58 +01:00
/// Read parquet and return a Polars DataFrame
pub fn read_parquet(path: String) -> DataFrame {
let file = fs::File::open(path).expect("Could not open file");
let df = match ParquetReader::new(file).finish() {
2022-11-20 01:34:04 +01:00
Ok(df) => df,
Err(e) => {
eprintln!("{e}");
DataFrame::default()
}
};
df
}