我正在尝试将包含超过 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)
您可以使用f.seek(offset) https://stackoverflow.com/a/11696554/4909087设置文件指针从某个偏移量开始读取。
在你的情况下,你想跳过5000000
字节,所以你会打电话
f.seek(50000000)
此时,您想阅读另一本50000000
字节,所以你会打电话f.read(50000000)
.
这将是您的完整代码清单,实现f.seek
并读取整个文件:
with open(x, "rb") as f:
f.seek(50000000) # omit if you don't want to skip this chunk
data = f.read(50000000)
while data:
... # do something
data = f.read(50000000)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)