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

Python将8位整数保存到文件

  •  2
  • GirginSoft  · 技术社区  · 11 年前

    我有一个8位数字的列表,比如[255,8,16,254…],这些文件的计数大约为8000。 我对保存这些数字有疑问,当我保存它时,它必须是8000字节,我错了吗? 但我有大约20公斤。当我读取这些数字时,我如何将其保存为8位。

    file = open(name,"wb")
    for el in data:
        file.write(bytes(el))
    

    我的错在哪里?请帮忙

    1 回复  |  直到 11 年前
        1
  •  1
  •   Martijn Pieters    11 年前

    答案很大程度上取决于您使用的Python版本。

    如果是Python 3,则调用 bytes() 不正确;通过给它一个整数,您需要一个 字节() 对象 那么大的 :

    >>> bytes(10)
    b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    

    这是10个空字节,而不是一个值为0x10的字节。

    改为按顺序传递:

    >>> bytes([10])
    b'\n'
    

    事实上,你根本不需要你的循环;如果 data 都是整数,您可以创建 bytes 对象,并写下:

    with open(name,"wb") as f:
        file.write(bytes(data))
    

    如果这是Python 2,则不应使用 字节() 毕竟,它只是一个别名 str() :

    >>> bytes(10)
    '10'
    

    这就是角色 1 0 (ASCII码点49和48),而不是值为0x10的字节。

    可以 使用 bytearray() 你可以用同样的方法 字节() (和 字节数组() )在Python 3中;创造 此类对象来自 数据 并写道:

    with open(name,"wb") as f:
        file.write(bytearray(data))