Comment puis-je écrire des données binaires brutes en Python?

J'ai un programme en Python qui stocke et écrit des données dans un fichier. Les données sont des données binaires brutes, stockées en interne str. Je vais écrire par le biais d'un codage utf-8 codec. Cependant, je reçois UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 25: character maps to <undefined> dans le cp1252.py fichier.

Cela me semble Python essaie d'interpréter les données à l'aide de la page de code par défaut. Mais il n'est pas ont une page de code par défaut. C'est pourquoi je suis en utilisant str, pas unicode.

Je pense que mes questions sont les suivantes:

  • Comment puis-je représenter des données binaires brutes en mémoire, en Python?
  • Quand je suis en train d'écrire des données binaires brutes par le biais d'un codec, comment puis-je encoder/unencode?
Vous dites que vous avez données brutes dans un str, comment allez-vous générer des données en premier lieu? Je suis en supposant que vous avez une unicode source quelque part, mais il n'est pas clair pour moi si vous écrivez "raw" unicode dans les str, ou, si vous lisez à partir d'un fichier (comme objet) ou... (Poster un exemple de chaîne qui illustre cette erreur serait utile!)

OriginalL'auteur Chris B. | 2010-04-09