使用Python读取大型二进制文件的最快方法

RTC222

我需要在Python 3.6中读取一个简单但较大的(500MB)二进制文件。该文件是由C程序创建的,它包含64位双精度数据。我尝试使用struct.unpack,但这对于大型文件来说非常慢。

这是我的简单文件:

def ReadBinary():

    fileName = 'C:\\File_Data\\LargeDataFile.bin'

    with open(fileName, mode='rb') as file:
        fileContent = file.read()

现在我有了fileContent。将其解码为64位双精度浮点或无需进行格式转换即可读取的最快方法是什么?

我想避免,如果可能的话,请分块读取文件。我想像C一样一次读取所有解码后的内容。

暗影游侠

您可以使用array.array('d') fromfile方法:

def ReadBinary():
    fileName = r'C:\File_Data\LargeDataFile.bin'

    fileContent = array.array('d')
    with open(fileName, mode='rb') as file:
        fileContent.fromfile(file)
    return fileContent

这是C级读取的原始机器值。mmap.mmap还可以通过创建工作memoryview中的mmap对象和铸造它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章