适配生成器和其它可迭代对象到文件接口
项目描述
iterable-io
iterable-io
是一个小的Python库,它提供了一个适配器,使得可以从 可迭代 对象中以类似于 文件对象 的方式读取。
它主要用于连接两个不兼容的接口之间的“胶水”。例如,在一个接口期望调用 .read()
的文件对象,而另一个仅提供字节生成器的情况下。
解决此问题的一种方法是将生成器中的所有字节写入临时文件,然后提供该文件,但如果生成器产生大量数据,这将是启动缓慢且资源消耗大的。
此库允许在这两个不兼容的接口之间流式传输数据,因此当请求 .read()
时,它会从可迭代对象中提取数据。这保持了资源使用率低,并消除了启动延迟。
安装
pip install iterable-io
文档
此库的功能通过一个单独的函数 open_iterable()
来访问。
open_iterable()
被设计成与内置的 open()
以相同的方式工作,除了它接收一个可迭代对象而不是文件来“打开”。例如,它可以以二进制或文本模式打开可迭代对象,有缓冲、编码等选项。有关更详细的文档,请参阅 open_iterable
的文档字符串。
简单示例
以下示例应该足以了解在哪些情况下 open_iterable()
会很有用,并大致了解如何使用它。
从字节生成器中读取字节
gen = generate_bytes()
# adapt the generator to a file-like object in binary mode
# (fp.read() will return bytes)
fp = open_iterable(gen, "rb")
while chunk := fp.read(4096):
process_chunk(chunk)
从字节生成器中读取文本行
gen = generate_bytes()
# adapt the generator to a file-like object in text mode
# (fp.read() will return a string, fp.readline is also available)
fp = open_iterable(gen, "rt", encoding="utf-8")
for line in fp:
process_line_of_text(line)
测试
此包包含广泛的测试。要运行它们,请安装 pytest
(pip install pytest
)然后在项目目录中运行 py.test
。
许可证
遵循 GNU LGPLv3 许可。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
iterable-io-1.0.0.tar.gz (6.0 kB 查看哈希值)
构建分发
iterable_io-1.0.0-py3-none-any.whl (4.9 kB 查看哈希值)
关闭
iterable-io-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fb9e1b739587a9ba0d5c60a3e1eb71246761583bc9f18b3c35bb112b44b18c3c |
|
MD5 | d6027af37f8e15edd346bdff6d5c5e3c |
|
BLAKE2b-256 | 40be27d59b5c1d74ecbd26c1142f84b61d6cb04f0d0337697149645f34406b2d |
关闭
iterable_io-1.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 509b0e54888d7302d67687739d96014a79d54771723e9b0842a0243b467e6294 |
|
MD5 | c87d4f59e271c2e1c6dcef24fa8fa04f |
|
BLAKE2b-256 | 8d6339881aeeaf0a186fce8a755ec26e76ba61731a89b66e08b9139cec26ff0d |