我有一个巨大的二进制格式数字文件,只有其中的某些部分需要解析成一个数组。我查看了numpy.fromfile
and open
,但他们没有从文件中的位置 A 读取到位置 B 的选项。这可以做到吗?
问问题
71 次
2 回答
2
如果您正在处理“巨大的文件”,我不会简单地阅读 - 忽略所有内容,直到您真正需要数据为止。
取而代之的是:Python 中的文件对象有一个.seek()
方法,您可以使用该方法直接跳转到需要开始有效解析数据的位置,绕过之前的所有内容。
with open('huge_file.dat', 'rb') as f:
f.seek(1024 * 1024 * 1024) # skip 1GB
...
另请参阅:http ://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects
于 2013-10-05T22:38:19.417 回答
1
如果您知道您感兴趣的数据的精确位置,您可以只使用seek(<n bytes>)
文件对象上的方法,如文档中所述。在开始阅读之前只需调用一次(使用给定的偏移量)。
于 2013-10-05T22:40:44.087 回答