【发布时间】:2018-01-01 01:30:55
【问题描述】:
我正在尝试使用 numpy.fromfile() 读取一个非常大(几 GB)的二进制文件。一次读取整个文件会产生内存不足错误,因此我想创建一个循环来一次读取和处理 N 块数据。类似于以下内容:
while True:
numpy.fromfile(f, recordType, N)
# proccess data
if f.EOF():
break
如何检测何时到达文件末尾,以便中断循环?
【问题讨论】:
-
也许使用 h5py 库是一种选择:stackoverflow.com/q/36291562/67579
-
而不是while循环,先循环文件的大小,然后循环你需要循环的块数
-
也阅读文档,这种方法似乎不太便携或无法读取任何文件...docs.scipy.org/doc/numpy/reference/generated/…
-
@MrE 在这种情况下可能会有意义,特别是因为任意 N 甚至可能不会划分文件中的块数,但一般来说,没有办法检测文件的结尾,如果你不使用 read()?
-
我认为您可能能够检测到您没有读取所需数量的对象,但是该方法显然没有返回对象的计数或任何内容。