问题描述
我有一个字符串列表,我想将它传递给一个只接受一个 file
类对象的 api,而不必连接/展平列表以使用 StringIO
之类的对象.
字符串是 utf-8,不一定以换行符结尾,如果简单连接可以直接在 StringIO
中使用。
首选解决方案将在标准库(python3.8)中(鉴于数据的形状自然类似于文件(显然与 readlines()
相同),并且内存访问模式将是有效的,我有一种感觉,我只是没有正确地使用 DuckDuckGo)-但如果不存在任何“流”(无数据连接)解决方案就足够了。
[更新,基于@JonSG 的链接]
RawIOBase
和 TextIOBase
看起来都提供了一个 api,可以将任意大小的“块”/片段(在我的情况下:列表中的字符串)与 file-like
读取分离,该读取可以指定其自己的读取块大小,同时流式传输数据本身(在任何给定时间内存成本仅增加一些窗口[当然取决于您的源和接收器的行为])
RawIOBase.readinto
看起来特别有前途,因为它提供了直接返回给客户端读取的缓冲区,从而允许更简单的代码 - 但这似乎是以一个完整副本(到该缓冲区中)为代价的。
TextIOBase.read()
解决相同子问题的操作有其自身的成本,该子问题将 k
(k
远小于 N
)块连接在一起。
我会调查这两个。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)