4.7 codecs --- Registres des Codec et classes de base

Ce module définit les classes de bases pour les codecs (des encodeurs et des décodeurs) standard de Python et fournit des accès aux registres des codec internes de Python qui contrôlent le processus de consultation de codec.

Il défini les fonctions suivantes :

register(search_function)
Enregistre une fonction de recherche de codec. Les fonctions de recherche sont supposées prendre un argument, le nom de codage en lettres minuscules, et renvoie un tuple de fonctions (encoder, decoder, stream_reader, stream_writer) prenant les arguments suivants:

encoder et decoder: Ce doit être des fonctions ou des méthodes qui ont la même interface que les méthodes encode()/decode() des instances de codec (voir l'interface de codec). Ces functions/methodes sont supposées fonctionner en mode apatride.

stream_reader et stream_writer: Ceux-ci doivent être des fonctions d'usine fournissant l'interface suivante:

factory(stream, errors='strict')

Les frabiques de fonctions doivent renvoyer des objets fournissant les interfaces définies par les classes de base StreamWriter et StreamReader, respectivement. Les flux de codecs peuvent maintenir l'état.

Les valeurs possibles pour des erreurs sont 'strict' (lever une exception en cas d'erreur de codage), 'replace' (remplacer les données mal formées par un marqueur de substitut approprié, tel que le "?") et 'ignore' (ignorer les données mal formées et continuer sans davantage de communication préalable).

Au cas où une fonction de recherche ne pourrait pas trouver un codage donné, elle devrait renvoyer None.

lookup(encoding)
Recherche un tuple de codec dans les registres codec de Python et renvoie le tuple de fonction comme défini ci-dessus.

Les encodages sont d'abord recherchés dans le cache des registres. S'ils ne sont pas trouvés, la liste des fonctions de recherche enregistrées est balayée. Si aucun tuple de codecs n'est trouvé, LookupError est levée. Autrement, le tuple de codecs est stocké dans le cache et retourné à l'appelant.

Pour simplifier le travail avec les fichiers ou les flux codés, le module définit également ces fonctions utilitaires :

open(filename, mode[, encoding[, errors[, buffering]]])
Ouvre un fichier encodé en utilisant le mode donné et renvoient une version enveloppée fournissant un encodage/decodage transparent.

Note: La version enveloppée acceptera seulement le format d'objet défini par les codecs, c.-à-d. des objets Unicode pour la plupart des codecs intégrés. La sortie est également codec-dépendante et sera habituellement un objet Unicode aussi.

encoding spécifie l'encodage à utiliser pour le fichier.

errors peuvent être donnés pour définir la gestion d'erreurs. Il vaut par défaut 'strict' ce qui cause la levée de ValueError au cas où une erreur de codage se produirait.

buffering a la même signification que pour la fonction intégrée open(). Par défaut, les lignes sont bufferisées.

EncodedFile(file, input[, output[, errors]])
Renvoient une version enveloppée du fichier qui fournit une traduction de codage transparente.

Les chaines écrites dans le fichier enveloppé sont interprétées selon l' encodage input donné, puis écrites dans le fichier original comme des chaines en utilisant l'encodage output. L'encodage intermédiaire habituellement sera Unicode mais dépend des codecs indiqués.

Si output n'est pas donné, il vaut par défaut input.

errors peuvent être donnés pour définir la gestion d'erreurs. Il vaut par défaut 'strict', qui cause la levée de ValueError au cas où une erreur d'encodage se produirait.

Le module fournit également les constantes suivantes qui sont utiles pour la lecture et l'écriture de fichiers dépendants de la plateforme:

BOM
BOM_BE
BOM_LE
BOM32_BE
BOM32_LE
BOM64_BE
BOM64_LE
Ces constantes définissent les marques d'ordre de byte (BOM) employées dans les flux de données pour indiquer l'ordre des octets utilisé dans le flux ou le fichier. BOM est l'un ou l'autre BOM_BE ou BOM_LE selon l'ordre natif des octets de la plateforme, alors que les autres représentent big endian (suffixe "_BE") et little endian (suffixe "_LE"), l'ordre des octets utilisant des encodages de 32 bits et 64-bits.


Sous-sections
  1. Classes Codec de Base