我有一个二进制格式的巨大数字文件,只需将其某些部分解析为数组。我查看了numpy.fromfile
和open
,但他们没有选择从文件中的位置A读取到位置B.可以这样做吗?
答案 0 :(得分: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
答案 1 :(得分:1)
如果您知道自己感兴趣的数据的准确位置,可以使用文件对象上的seek(<n bytes>)
方法documented。在开始阅读之前,只需调用一次(使用给定的偏移量)。