1

我有一个巨大的二进制格式数字文件,只有其中的某些部分需要解析成一个数组。我查看了numpy.fromfileand open,但他们没有从文件中的位置 A 读取到位置 B 的选项。这可以做到吗?

4

2 回答 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 回答