为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2022-11-24 15:23:05

我有一个包含 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 位浮点数?


查看完整描述

1 回答

?
翻阅古今

TA贡献1488条经验 获得超5个赞

您需要将列表作为字节写入文件,然后使用array.frombytes方法读取它。


这是一个完整的例子:


写作

import array


data_list = [1, 2, 3, 4]

float_array = array.array('d', data_list)

# write float_array as bytes

with open("Python64_Float", "wb") as fout:

    float_array.tofile(fout)

阅读

现在,array.frombytes像这样阅读它:


import array


another_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])


查看完整回答
反对 回复 2022-11-24

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信