gpt4 book ai didi

python - 类型错误 : 'bytearray' object cannot be interpreted as an integer

转载 作者:行者123 更新时间:2023-12-05 08:39:45 40 4
gpt4 key购买 nike

我想通过 HTTP 发送音频数据,但我不明白为什么会出现此异常:

Exception happened during processing of request from ('127.0.0.1', 59976)
Traceback (most recent call last):
File "/usr/lib/python3.6/socketserver.py", line 654, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python3.6/socketserver.py", line 364, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python3.6/socketserver.py", line 724, in __init__
self.handle()
File "/usr/lib/python3.6/http/server.py", line 418, in handle
self.handle_one_request()
File "/usr/lib/python3.6/http/server.py", line 406, in handle_one_request
method()
File "/home/vivanov/temp.py", line 113, in do_GET
data.append(bytearray(stream.read(CHUNK)))
TypeError: 'bytearray' object cannot be interpreted as an integer

问题似乎与将值传递给 wfile.write 有关。

我该如何解决这个问题?

这是我的代码:

class ChunkingRequestHandler(BaseHTTPRequestHandler):
    ALWAYS_SEND_SOME = False
    ALLOW_GZIP = False
    protocol_version = 'HTTP/1.1'
    def do_GET(self):
        ae = self.headers.get('accept-encoding') or ''

        # send some headers
        self.send_response(200)
        self.send_header('Transfer-Encoding', 'chunked')
        self.send_header('Content-type', 'audio/x-wav')

        self.end_headers()

        data = bytearray(wav_header)
        data.append(bytearray(stream.read(CHUNK)))
        print(data)
        self.wfile.write(b"%X\r\n%s\r\n" % (len(data), data))

        while True:
            data = bytearray(stream.read(CHUNK))
            self.wfile.write(b"%X\r\n%s\r\n" % (len(data), data))

        # send the chunked trailer
        self.wfile.write('0\r\n\r\n')

最佳答案

不管它的名字,如果你想在 Python 中一次将多个元素附加到一个类似列表的对象,你不能使用 append 方法。 bytearray 就像一个字节列表,因此将另一个 bytearray 添加或连接到它的方法是使用 extend 方法,或 +=:

data += bytearray(...)
# OR
data.extend(bytearray(...))

事实上,如果您要添加到 bytearray 的内容已经可以传递到 bytearray() 构造函数中,您可能不需要将其包装在 bytearray() 中。例如,可以直接添加bytes对象(如b'something'):

data += b'something'

一旦您修复了该行代码,您可能会在其他行上遇到问题。例如,如果 wfile.write 需要 bytes,那么向它发送一个像 '0\r\n\r\n' 这样的 unicode 字符串将可能是错误;看起来你打算写 b'0\r\n\r\n'

关于python - 类型错误 : 'bytearray' object cannot be interpreted as an integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59110653/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com