我有一个包含 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))ANDdata = file_object.read()但在这两种情况下,它都返回一个零数组,这不是文件包含的内容。我可以用另一个工具打开和读取这个文件,但我需要用 Python 来读取它。我也尝试用 array.fromfile 读取它,但 Visual Studio 说“模块‘array’没有属性‘fromfile’——但根据 array 模块上的 Python 站点,它确实有一个 fromfile 属性。所以我的问题是:如何将 Python array 模块创建的文件读取为 64 位浮点数?
1 回答
翻阅古今
TA贡献1780条经验 获得超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])
添加回答
举报
0/150
提交
取消