python编码和gzip的Perl等价物

2024-04-23 16:54:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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方面做错了什么吗?你知道吗


Tags: 字符串testjsonreadoutputdatauseexample
1条回答
网友
1楼 · 发布于 2024-04-23 16:54:11

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

sys.stdout.buffer.write(output_data)

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

相关问题 更多 >