Python: msgpack TypeError "write() argument must be str, not bytes" beheben

Problem:

Beim Versuch, ein Objekt mit msgpack in eine Datei zu schreiben, mit Code wie

write_msgpack_text_mode.py
with open("myobj.msgpack", "w") as outfile:
    msgpack.dump(myobj, outfile)

wird eine Fehlermeldung wie die folgende angezeigt:

msgpack_traceback.txt
File /usr/lib/python3/dist-packages/msgpack/__init__.py:26, in pack(o, stream, **kwargs)
    20 """
    21 Pack object `o` and write it to `stream`
    22
    23 See :class:`Packer` for options.
    24 """
    25 packer = Packer(**kwargs)
---> 26 stream.write(packer.pack(o))

TypeError: write() argument must be str, not bytes

Lösung

msgpack schreibt Binärdaten, daher musst du die Datei im Binärmodus mit open(..., "wb") öffnen:

write_msgpack_binary.py
with open("myobj.msgpack", "wb") as outfile:
    msgpack.dump(myobj, outfile)

Check out similar posts by category: Python