当前位置: 首页 > 工具软件 > Zstandard > 使用案例 >

python length从哪个包引入_Python zstandard包_程序模块 - PyPI - Python中文网

许华清
2023-12-01

流式输入API

stream_writer(fh)允许您将{em1}$stream数据放入压缩器。

返回的实例实现了io.RawIOBase接口。只有方法

涉及写作的东西会有用的。

stream_writer()的参数必须有一个write(data)方法。作为

压缩数据可用,write()将使用压缩

数据作为它的论据。许多常见的python类型实现write(),包括

打开文件句柄和io.BytesIO。

write(data)方法用于将数据馈送到压缩器中。

可以调用flush([flush_mode=FLUSH_BLOCK])方法来逐出

数据保持在压缩机的内部状态,进入输出对象。这个

可能导致对输出对象的0个或多个write()调用。这种方法

接受可选的flush_mode参数来控制刷新行为。

它的值可以是任何FLUSH_*常量。

write()和flush()都返回写入

对象的write()。在许多情况下,小的投入积累不够

导致写入和write()的数据将返回0。

调用close()将流标记为已关闭和后续I/O

操作将提高ValueError(根据

io.RawIOBase)。close()还将调用基础上的close()。

流,如果存在这样的方法。

通常用法如下:cctx = zstd.ZstdCompressor(level=10)

compressor = cctx.stream_writer(fh)

compressor.write(b'chunk 0\n')

compressor.write(b'chunk 1\n')

compressor.flush()

# Receiver will be able to decode ``chunk 0\nchunk 1\n`` at this point.

# Receiver is also expecting more data in the zstd *frame*.

compressor.write(b'chunk 2\n')

compressor.flush(zstd.FLUSH_FRAME)

# Receiver will be able to decode ``chunk 0\nchunk 1\nchunk 2``.

# Receiver is expecting no more data, as the zstd frame is closed.

# Any future calls to ``write()`` at this point will construct a new

# zstd frame.

实例可以用作上下文管理器。退出上下文管理器是

相当于调用close(),相当于调用

flush(zstd.FLUSH_FRAME):cctx = zstd.ZstdCompressor(level=10)

with cctx.stream_writer(fh) as compressor:

compressor.write(b'chunk 0')

compressor.write(b'chunk 1')

...

重要

如果不调用flush(FLUSH_FRAME),则发出的数据不构成

完整的zstdframe和此数据的使用者可能会抱怨格式错误

输入。建议使用实例作为上下文管理器,以确保

frames已正确完成。

如果输入到这个流压缩程序的数据的大小是已知的,

您可以在压缩开始之前声明它:cctx = zstd.ZstdCompressor()

with cctx.stream_writer(fh, size=data_len) as compressor:

compressor.write(chunk0)

compressor.write(chunk1)

...

声明源数据的大小允许压缩参数

调整一下。如果使用write_content_size,也会导致

写入输出数据的帧头的内容大小。

可以指定到目的地的write()块的大小:cctx = zstd.ZstdCompressor()

with cctx.stream_writer(fh, write_size=32768) as compressor:

...

要查看流式压缩程序使用了多少内存:cctx = zstd.ZstdCompressor()

with cctx.stream_writer(fh) as compressor:

...

byte_size = compressor.memory_size()

到目前为止写入的字节总数通过tell():cctx = zstd.ZstdCompressor()

with cctx.stream_writer(fh) as compressor:

...

total_written = compressor.tell()

stream_writer()接受一个write_return_read布尔参数来控制

write()的返回值。当False(默认值)时,write()返回

字节数是write()``en to the underlying object. When

``True,write()返回从输入中读取的字节数

随后写信给压缩机。True是正确的行为

对于由io.RawIOBase接口指定的write(),将成为

将来版本中的默认值。

 类似资料: