python - 发送在 Python 中压缩的 zip 存档但尝试在 Rust 中解压缩的问题

标签 python rust gzip

我有这段代码用 zlib 压缩数据( gzip ) 在 Python 中

dta = bytes(str("..."))
res = zlib.compress(dta)
with open('packed.gz', 'wb') as f:
    f.write(t)
我想用 Rust 打开它
use std::io::prelude::*;
use flate2::read::GzDecoder; // flate2 = "1.0"
use std::fs::File;

fn main() {
    let f = File::open("packed.gz").unwrap();
    let mut d = GzDecoder::new(f);
    let mut s = String::new();
    d.read_to_string(&mut s).unwrap();
    println!("{}", s);
}
我得到
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Custom { kind: InvalidInput, error: "invalid gzip header" }', src/main.rs:11:30
文件格式差异有问题吗?

最佳答案

你的python程序生成的数据流实际上不是.gz -file,它是一个原始的 DEFLATE 流。如果您想要 .gz -file(包括 flate2::read::GzDecoder 期望的 gz 头文件),使用 gzip Python 中的模块。如果您确实想要原始 DEFLATE 流(由 zlib.compress 生成),请使用 flate2::read::DeflateDecoder解压缩数据。

关于python - 发送在 Python 中压缩的 zip 存档但尝试在 Rust 中解压缩的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64170883/

相关文章:

python - Apache Flink : Kafka connector in Python streaming API, "Cannot load user class"

python - 有没有办法使用 matplotlib 绘制具有指定宽度和高度的文本?

python - 用 tensorflow 训练模型,但损失就是不会下降?

rust - 在惰性静态 RwLock<Option<T>> 中返回对 T 的引用?

Rust - 如何在集合中找到第 n 个最频繁出现的元素

java - 如何保存 soapui 的压缩响应?

asp.net-mvc-3 - 使用 Razor 在 Asp.Net MVC3 上合并、缩小和 GZIP 样式和脚本的完整解决方案

python - 覆盖 `from my_module import ...`

rust - 如何在 Rust 中最好地 *fake* 关键字样式函数参数?

java - Wildfly 中 REST 响应的 GZip 压缩