gpt4 book ai didi

python - Python encode 和 gzip 的 Perl 等价物

转载 作者:太空宇宙 更新时间:2023-11-03 23:52:29 26 4
gpt4 key购买 nike

我正在尝试在 Perl 中生成一个压缩字符串,它等同于在 Python 中生成的字符串。

Python(产生正确的输出):

import gzip
test_file = 'example.json'

with open(test_file) as f:
output_data = gzip.compress(f.read().encode())
print(output_data)

或多或少我在 Perl 中尝试做的事情:

use Encode;
use IO::Compress::Gzip qw/gzip/;
use File::Slurp;

my $json = read_file('example.json', { binmode => ':raw' });
my $utf8_record = encode("utf8", $json);
my $output_data;
gzip \$utf8_record => \$output_data;
print $output_data;

知道我在 Perl 方面做错了什么吗?

最佳答案

您不会对 Perl 做任何错事。您的 Python 代码和 Perl 代码都使用 gzip 正确压缩了数据。只有 Perl 将输出打印为二进制,而您的 Python 代码打印输出的可读表示形式,即类似 b"\x1f\x8b..." 的内容。要获得与 Perl 类似的结果,您需要将二进制数据打印到标准输出而不是字符串表示形式,即代替 print(...) do

sys.stdout.buffer.write(output_data)

然后两个程序都会将 gzip 压缩数据写入标准输出。请注意,输出可能仍然不同,因为默认情况下它们对 gzip 使用不同的选项(压缩率、操作系统类型...),但在这两种情况下数据都使用 gzip 进行了正确压缩。

关于python - Python encode 和 gzip 的 Perl 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58922694/

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