在 Python 中使用 bytearray 究竟是如何工作的?

How exactly works the use of bytearray in Python?

我完全是 Python 的新手,我有以下问题。

根据我在声明 字节数组的文档中读到的内容 我不能分配一个不在 0 到 255 范围内的值。

事实上做这样的事情:

data = bytearray(1000)

for i in range(len(data)):
    data[i] = 10 - i

for b in data:
    print(hex(b))

我得到以下异常:

Traceback (most recent call last):
  File "main.py", line 4, in <module>
    data[i] = 10 - i
ValueError: byte must be in range(0, 256)

所以第一个问题:它到底是什么意思?这意味着我可以声明一个最多包含 256 个字节的字节数组?或者我错过了什么?如果这个推理是正确的:如果我必须读取一个包含超过 256 字节的二进制文件,我该如何处理这种情况?

此外,在另一个示例中,我发现此代码片段用于将数据从源二进制文件复制到目标文件:

from os import strerror

srcname = input("Source file name?: ")
try:
    src = open(srcname, 'rb')
except IOError as e:
    print("Cannot open source file: ", strerror(e.errno))
    exit(e.errno)   
dstname = input("Destination file name?: ")
try:
    dst = open(dstname, 'wb')
except Exception as e:
    print("Cannot create destination file: ", strerr(e.errno))
    src.close()
    exit(e.errno)   

buffer = bytearray(65536)
total  = 0
try:
    readin = src.readinto(buffer)
    while readin > 0:
        written = dst.write(buffer[:readin])
        total += written
        readin = src.readinto(buffer)
except IOError as e:
    print("Cannot create destination file: ", strerr(e.errno))
    exit(e.errno)   

print(total,'byte(s) succesfully written')
src.close()
dst.close()

如您所见,它正在声明一个包含超过 255 个元素的字节数组:

buffer = bytearray(65536)

我想我错过了什么。它究竟是如何工作的?

消息很清楚:数组中的每个 value 必须是一个字节,并且是一个 "byte must be in range(0, 256)"。它没有说明数组中可以包含多少个元素。