如何读取R或python中二进制文件的最后n个值?
答案 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)
如果您的文件太大而无法存储在内存中,请告诉我,我可以建议其他解决方案。