我需要在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')
'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
也可以工作。