尝试读取使用 Python 数组模块创建的数据文件时出现问题

我有一个包含 64 位 IEEE 浮点数据的数据文件。我使用 Python array 模块创建了它:


float_array = array('d', data_list)

float_array.tofile(out_fname)

其中 data_list 是一个包含整数的简单 Python 列表。


现在我想打开那个文件并从中读取。我试过这个:


fname = 'C:\Data_Files\Python64_Float'

file_object  = open(fname, "rb")

我尝试通过两种方式阅读它:


data = struct.unpack('f', file_object.read(4))


AND


data = file_object.read()

但在这两种情况下,它都返回一个零数组,这不是文件包含的内容。我可以用另一个工具打开和读取这个文件,但我需要用 Python 来读取它。


我也尝试用 array.fromfile 读取它,但 Visual Studio 说“模块‘array’没有属性‘fromfile’——但根据 array 模块上的 Python 站点,它确实有一个 fromfile 属性。


所以我的问题是:如何将 Python array 模块创建的文件读取为 64 位浮点数?


森栏
浏览 100回答 1
1回答

翻阅古今

您需要将列表作为字节写入文件,然后使用array.frombytes方法读取它。这是一个完整的例子:写作import arraydata_list = [1, 2, 3, 4]float_array = array.array('d', data_list)# write float_array as byteswith open("Python64_Float", "wb") as fout:    float_array.tofile(fout)阅读现在,array.frombytes像这样阅读它:import arrayanother_float_array = array.array('d', [])with open("Python64_Float", "rb") as fin:    another_float_array.frombytes(fin.read())print(another_float_array)#array('d', [1.0, 2.0, 3.0, 4.0])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python