cStringIO,读取块中的字节直到EOF?
Posted
技术标签:
【中文标题】cStringIO,读取块中的字节直到EOF?【英文标题】:cStringIO, reading bytes in chunks until EOF? 【发布时间】:2012-08-24 09:49:07 【问题描述】:我想一次读取一个 1MB 的字符串,然后通过 XMLRPC 上传,这是最好的方法吗?有什么需要注意的吗?
while data.read(1048576) != None:
data.seek(1048576, 1)
if not rpc_srv.chunk_upload(tf_uuid, data_chunk):
raise Exception('Failed to upload data.')
【问题讨论】:
【参考方案1】:您可以使用带有标记的iter()
function 来简化您的循环:
for data_chunk in iter(lambda: data.read(1048576), ''):
if not rpc_srv.chunk_upload(tf_uuid, data_chunk):
raise Exception('Failed to upload data.')
不需要.seek()
,.read()
调用已经更新了位置。
【讨论】:
实施此操作后,我开始收到“内存错误” @Jharwood:创建一个带有完整回溯的新问题。例如,这可能是其他地方完全不相关的问题,或者可能是您的 cStringIO 实例的大小。以上是关于cStringIO,读取块中的字节直到EOF?的主要内容,如果未能解决你的问题,请参考以下文章