【发布时间】:2017-07-20 05:24:14
【问题描述】:
我正在尝试将包含超过 10 亿字节的文件转换为整数。显然,我的机器无法立即执行此操作,因此我需要对代码进行分块。我能够解码前 50,000,000 个字节,但我想知道如何读取文件中介于 50,000,001 和 100,000,000、150,000,000 和 200,000,000 等之间的整数。以下是我现在拥有的;范围函数不适用于此。
import struct
with open(x, "rb") as f:
this_chunk = range(50000001, 100000000)
data = f.read(this_chunk)
ints1 = struct.unpack("I" * (this_chunk //4) , data)
print(ints1)
【问题讨论】:
-
file.read()已经支持定义你需要读取的大小,f.read(50000000)会一次返回50000000。上面的代码不会抛出错误吗,我希望将range()对象传递给f.read()会出错。 -
@AChampion 是的,确实如此。问题是,如果我只是将 50000000 输入到 f.read 中,它会不断输出相同的数字
-
那是因为你每次都打开文件。只打开一次文件并多次使用
f.read(),即循环使用。
标签: python