我需要在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] 删除。
我来说两句