繁体   English   中英

缓冲区/流读取Python中文件的子集?

[英]Buffer/stream to read a subset of a file in Python?

我编写了一个类,用于解析数据文件的标题段(用于存储科学仪器数据),并收集文件中各个数据段的偏移量之类的内容。 实际数据是通过读取和解析数据段的各种方法获得的。

我遇到的问题是为供应商特定的非结构化数据定义了一个细分。 由于没有什么要解析的,所以我只需要我的方法即可返回原始二进制数据。 但是,该段可能非常大,所以我不希望一次全部读取并返回一个bytes对象。

我想做的是让该方法将io.BufferedReader对象或类似对象返回到仅在起始偏移量和结束偏移量之间读取的文件中。 我还没有办法找到使用内置IO类执行此操作的方法。 可能吗?

您可以从IOBase继承所有类方法,因此您可以绝对调用reader.seek(byte_offset)跳到流中的此字节位置。 但是,从那里您将不得不手动跟踪已读取的字节,直到获得要读取的最大偏移量。 当然,必须事先知道seek()的起始偏移量以及结束字节的偏移量。 下面是一些示例代码(假设起始偏移量为字节250):

import io

stream = io.open("file.txt", "r")
buffered_reader = io.BufferedReader(stream)
# set the stream to byte 250
buffered_reader.seek(250)
# read up to byte 750 (500 bytes from position 250)
data = buffered_reader.read(500)

当然,如果此标头是动态调整大小的,则必须进行扫描以确定起始位置,这意味着逐行读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM