代码之家  ›  专栏  ›  技术社区  ›  RTC222

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

  •  0
  • RTC222  · 技术社区  · 5 年前

    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来读取它。

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

    谢谢你的帮助。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Anwarvic    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)
    

    现在,使用 数组.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])