我正在为事件日志开发一个纯 Python 文件解析器,其大小可能从千字节到千兆字节不等。是否有一个模块可以将显式 // 调用抽象.open()
为一个简单的类似缓冲区的对象.seek()
?您可能会认为这是 的倒数。我希望它可能看起来像:.read()
.close()
StringIO
with FileBackedBuffer('/my/favorite/path', 'rb') as buf:
header = buf[0:0x10]
footer = buf[0x10000000:]
该mmap
模块可以满足我的要求;但是,我有两个保留意见,希望得到反馈:
- 模块处理大于可用 RAM/swap 的文件很重要。我不确定是否
mmap
可以很好地做到这一点。 mmap
构造函数因操作系统而异。这让我犹豫不决,因为我正在寻找编写出色的跨平台代码,并且不想在操作系统细节上搞砸。如果需要,我会这样做,但这引发了我可能找错地方的警告。
如果mmap
是诸如任务的正确模块,它如何处理这两点?如果不是,什么是合适的模块?