如何从R或python中的二进制文件中读取最后n个值?

时间:2017-05-13 00:25:40

标签: python r

如何读取R或python中二进制文件的最后n个值?

2 个答案:

答案 0 :(得分:1)

如果你这样做,你仍然在缓冲文件;但是,您不是要将整个文件保留在内存中以获取最后几个字节。当然,只对大文件有意义。

>>> fileName = 'temp.py'
>>> from os.path import getsize
>>> size = getsize(fileName)
>>> n = 10
>>> with open('temp.py', 'rb') as temp:
...     temp.seek(size - 10)
...     temp.read()
...     
207
b'bUrl+term)'

答案 1 :(得分:0)

在python3中,它很简单:

bytes_read = open("filename", "rb").read()
last_n_bytes = bytes_read[-n:]

Python使用切片表示法,因此我们可以通过以下方式对字节数组进行切片:从最后一个字符(-n)开始,然后获取所有字符(:),因为我们不# 39; t提供一个结束值,直到最后。

在R(我不是100%肯定),您应该能够阅读文件:

dat = readBin(files[f], n=3e7, what='integer', endian='swap')

(您可能需要较大的n值来获取整个文件)。

之后,您可以对结果向量(tail)使用dat

dat = tail(dat,n)

如果您的文件太大而无法存储在内存中,请告诉我,我可以建议其他解决方案。