【问题标题】:How to detect EOF with numpy.fromfile如何使用 numpy.fromfile 检测 EOF
【发布时间】: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()?
  • 我认为您可能能够检测到您没有读取所需数量的对象,但是该方法显然没有返回对象的计数或任何内容。

标签: python numpy fromfile


【解决方案1】:
while True:
   a = numpy.fromfile(f, recordType, N)
   # proccess data 
   if a.size < N:
        break

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多