【发布时间】:2012-12-07 19:13:04
【问题描述】:
如果 np.fromfile() 有最大文件大小?我正在尝试读取一个 48GB 的文件,其中包含大约 2.1e9 条记录(每条记录有 5 个值)。
当我将计数限制为 8e7 时它可以工作:
fromfile(filename, dtp, int(8e7))
Out[69]:
array([(1, 244025.0, 1.1666666269302368, 360.1666564941406, 50.0),
(2, 244025.0, 1.1666666269302368, 360.5, 50.0),
(3, 244025.0, 1.1666666269302368, 360.8333435058594, 50.0), ...,
(255138, 244131.0, 1128.9346923828125, 461.38494873046875, 49.5),
(255139, 244131.0, 1143.77783203125, 473.2532958984375, 49.5),
(255140, 244131.0, 1150.4803466796875, 464.6799011230469, 49.5)],
dtype=[('ntrac', '<i4'), ('ints', '<f8'), ('x', '<f4'), ('y', '<f4'), ('z', '<f4')])
但当计数设置为 9e7 时,所有值都被读取为零:
In [70]: fromfile(filename, dtp, int(9e7))
Out[70]:
array([(0, 0.0, 0.0, 0.0, 0.0), (0, 0.0, 0.0, 0.0, 0.0),
(0, 0.0, 0.0, 0.0, 0.0), ..., (0, 0.0, 0.0, 0.0, 0.0),
(0, 0.0, 0.0, 0.0, 0.0), (0, 0.0, 0.0, 0.0, 0.0)],
dtype=[('ntrac', '<i4'), ('ints', '<f8'), ('x', '<f4'), ('y', '<f4'), ('z', '<f4')])
【问题讨论】:
-
32 位还是 64 位 Python?
-
64 位 Mac OS X 上通过 macports 安装。
-
你能和
sys.maxsize确认它真的是64位吗? -
了解自己,我在写之前检查过! sys.maxsize:9223372036854775807; sys.maxsize > 2**32: 真
-
是的,我怀疑它对你有帮助,真的不明白这怎么可能,这里发生的所有事情实际上都是对
fread的调用,并且该调用的类型必须非常正确,否则你会得到错误。