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

问题描述 投票:0回答:1

我需要在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一样一次读取所有解码后的内容。

python python-3.x
1个回答
5
投票

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

fromfile

这是C级读取的原始机器值。通过创建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 对象的mmap.mmap并将其强制转换,memoryview也可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.