Tutoriel de bytes ( )
DESCRIPTION.
Crée un nouvel objet byte (tableau d'octets) non muable.
SYNTAXE.
BYT_Octects = b"octets"
BYT_Octects= ⇨ Nom de la variable [ OBLIGATOIRE ]
b"" ⇨ création d'une instance de bytes ( ) [ OBLIGATOIRE ]
octets ⇨ suite de caractères ASCII [ OBLIGATOIRE ]
BYT_Octects = bytes ( construction , code , erreur )
BYT_Octects ⇨ Nom de la variable [ OBLIGATOIRE ]
= ⇨ affectation de la liste à la variable [ OBLIGATOIRE ]
bytes ( ) ⇨ création d'une instance de bytes ( ) [ OBLIGATOIRE ]
construction ⇨ type de création [ OBLIGATOIRE ]
code ⇨ encode des caractères [ optionnel ]
erreur ⇨ gestionnaire d'erreurs à invoquer [ optionnel ]
REMARQUES.
Python gère de nombreux types d'objets_variables. Certains sont des collections de valeurs regroupées au sein d'un même objet_variable. Python propose 2 types d'objets byte, bytes ( ) et bytearray ( ). On peut les considérer comme une liste d'éléments dont les valeurs ne peuvent être comprise qu'entre 0 et 255, et représentées soit un caractère, soit par une séquence d’échappement, correspondant à la valeur ASCII. Les éléments sont donc stockés sous la forme d'octets, plus rapidement traitables par la machine, et directement enregistrés sur un support (disque dur, clé, ...).
Pour simplifier, on peut se dire qu'un bytes ( ) est un str ( ) qui ne peut contenir que les valeurs reconnues par le standard ASCII. Mais attention, car un bytes ( ) n'accepte que des objets bytes ( ) (b" ... ") ou compatibles avec eux, de même que les str ( ) n'accepte pas d'objet bytes ( ) sans les convertir.
Les variables globales de type bytes ( ) sont identifiées dans le site par : BYT_.
Voir les conventions sur les variables utilisées dans ce site ...
CRÉER UN TABLEAU D'OCTETS.
Pour créé un nouvel objet bytes ( ) ne contenant que des caractères ASCII, on insère la chaine de caractères entre une paire apostrophes (''), d'une paire de guillemets ("") ou d'une paire de triple quote (''''''), précédée d'un b minuscule (b' ', b" " ou b''' '''). On peut aussi utiliser le constructeur de classe.
BYT_Version = b"Python 3"
print ( BYT_Version ) retourne b'Python 3'
print ( type ( BYT_Version ) ) retourne <class 'bytes'>>
BYT_Version = bytes ( b"Python 3" )
print ( BYT_Version ) retourne b'Python 3'
print ( type ( BYT_Version ) ) retourne <class 'bytes'>>
Si la chaine de caractères contient des caractères non ASCII, Python lèvera une exception, même en utilisant le constructeur de classe.
BYT_Titre = b"Mon Python à moi." retourne bytes can only contain ASCII literal characters
BYT_Titre = bytes ( b"Mon Python à moi." ) retourne bytes can only contain ASCII literal characters
Pour créé un nouvel objet bytes ( ) contenant des caractères (octets, symboles, lettres, ...) issus d'un autre système d'encodage qu'ASCII, utf-8 par exemple, il faut obligatoirement appeler le constructeur de classe, et préciser le système d'appartenance des caractères., sinon Python lèvera une exception.
BYT_Titre = bytes ( "Mon Python à moi." ) retourne TypeError: string argument without an encoding
BYT_Titre = bytes ( "Mon Python à moi." , "utf-8" )
print ( BYT_Titre ) retourne b'Mon Python \xc3\xa0 moi.'
print ( type ( BYT_Titre ) ) retourne <class 'bytes'>>
Création un bytes ( ) vide.
BYT_Vide = b""
print ( BYT_Vide ) retourne b''
print ( type ( BYT_Vide ) ) retourne <class 'bytes'>>
BYT_Vide = bytes ( b"" )
print ( BYT_Vide ) retourne b''
print ( type ( BYT_Vide ) ) retourne <class 'bytes'>>
L'appel du constructeur de classe bytes ( ) avec un unique int ( ) comme argument, retourne un bytes ( ) contenant autant de 0 que la valeur de int ( ).
BYT_Zeros = bytes ( 8 )
print ( BYT_Zeros ) retourne b'\x00\x00\x00\x00\x00\x00\x00\x00'
print ( type ( BYT_Zeros ) ) retourne <class 'bytes'>
L'appel du constructeur de classe bytes ( ) avec un objet iterable (list ( ), tuple ( ), range ( )) comme argument, retourne un bytes ( ) contenant les valeurs de l'itérable.
BYT_Suite = bytes ( range ( 7 ) )
print ( BYT_Suite ) retourne b'\x00\x01\x02\x03\x04\x05\x06'
print ( bytes ( ( 97 , 101 , 105 , 111 , 117 , 121 ) ) ) retourne b'aeiouy'
print ( bytes ( [ knote for knote in range ( 65 , 72 ) ] ) ) retourne b'ABCDEFG'
Notez que c'est bien le caractère (lettre) ASCII correspondant au int ( ) qui est retourné, quand il existe, sinon c'est une séquence d'échappement, et que les éléments de l'objet bytes ( ) sont regroupés au sein d'une chaine unique, préfixée de b''", et non séparés par une virgule comme dans les objets itérables.
Le constructeur de classe bytes ( ) dispose aussi d'une méthode de classe .fromhex ( ) permettant de créer un bytes ( ) en donnant les valeurs hexadécimales des éléments à la place des int ( ) correspondants. Cette méthode attend un str ( ), comme unique argument, avec les valeurs hexadécimales, chacune représentée par 2 caractères, séparées ou non, par un ou des espaces, qui seront omis dans le bytes ( ).
print ( bytes.fromhex ( "3C 5a 414243 7E " ) ) retourne b'<ZABC~'
< étant le caractère ASCII ayant pour code 3C (60), Z étant le caractère ASCII ayant pour code 5A (90), A étant le caractère ASCII ayant pour code 41 (65), B étant le caractère ASCII ayant pour code 42 (66), C étant le caractère ASCII ayant pour code 43 (67), ~ étant le caractère ASCII ayant pour code 7E (126).
La méthode de classe .hex ( ) retournera un str ( ) contenant les valeurs hexadécimales des éléments d'un objet bytes ( ).
BYT_Version = b"Python 3"
Conversion = BYA_Version.hex ( )
print ( Conversion ) retourne 507974686f6e2033
print ( type ( Conversion ) ) retourne <class 'str'>
GESTION DES BYTES.
Connaitre la valeur d'un élément à un index précis dans un bytes ( ).
BYT_Version = b"Python 3"
print ( BYT_Version [ 0 ] , BYT_Version [ 6 ] , BYT_Version [ 2 ] ) retourne 80 32 116
Notez que se sont toujours des int ( ) qui sont retournés.
Connaitre la longueur (nombre d'éléments) d'un bytes ( ).
BYT_Version = b"Python 3"
print ( len ( BYT_Version ) ) retourne 8
BYT_Version est constituée de 8 éléments ( int ( ) compris entre 0 et 255).
Extraire une sous-séquence.
BYT_Texte = b"Salut le Monde !"
print ( BYT_Texte [ 3 : 11 ] ) retourne b'ut le Mo'
Premier = BYT_Texte [ 0 ]
print ( Premier ) retourne 83
print ( type ( Premier ) ) retourne <class 'int'>
BYT_Quoi = BYT_Texte [ 0 : 5 ]
print ( BYT_Quoi ) retourne b'Salut'
print ( type ( BYT_Quoi ) ) retourne <class 'bytes'>
Si on ne recherche qu'un élément c'est un int ( ) qui est retourné. Si on demande une tranche de la séquence (slicing) c'est un bytes ( ) qui est retourné. Voir la list ( ) pour plus informations sur le slicing.
Parcourir tous les éléments d'une chaîne de caractères.
BYT_Version = b"Python 3"
for kelement in BYT_Version :
print ( kelement , end = " " )
retourne
80 121 116 104 111 110 32 51
Rechercher la présence d'un élément dans un bytes ( ).
BYT_Joie = b"Youpi"
if b"p" in BYT_Joie : print ( "p est dans Youpi" ) retourne p est dans Youpi
if 112 in BYT_Joie : print ( "p est dans Youpi" ) retourne p est dans Youpi
if b"y" in BYT_Joie : print ( "y est dans Youpi" ) retourne rien car le test est faux
if b"p" in BYT_Joie : print ( "y est dans Youpi" ) retourne p est dans Youpi
if "p" in BYT_Joie : print ( "p est dans Youpi" ) retourne a bytes-like object is required, not 'str'
MÉTHODES SPÉCIFIQUES AUX OBJETS BYTES.
capitalize ( ) : retourne un tableau d'octets par une majuscule.
center ( ) : retourne un tableau d'octets entourée d'un symbole.
count ( ) : retourne le nombre d'octets ayant la même valeur.
decode ( ) : convertit un tableau d'octets en une chaine de caractères.
endswith ( ) : teste la fin d'un tableau d'octets avec un modèle.
find ( ) : retourne la position d'une occurrences dans un tableau d'octets.
fromhex ( ) : créé un tableau d'octets depuis des valeurs hexadécimales.
hex ( ) : convertit un tableau d'octets en des valeurs hexadécimales.
index ( ) : retourne la position d'une occurrences dans un tableau d'octets.
isalnum ( ) : teste si tous les octets du tableau sont alphanumériques.
isalpha ( ) : teste si tous les octets du tableau sont alphabétiques.
isascii ( ) : teste si tous les octets du tableau sont ASCII.
isdigit ( ) : teste si tous les octets du tableau sont des chiffres.
islower ( ) : teste la présence d'un minuscule dans un tableau.
isspace ( ) : teste si tous les octets du tableau sont des espaces.
istitle ( ) : teste un tableau se présente comme un titre.
isupper ( ) : teste la présence d'un majuscule dans un tableau.
join ( ) : assemble plusieurs tableaux d'octets entre-eux.
ljust ( ) : retourne un tableau d'octets justifiée à gauche.
lower ( ) : retourne tous les octets en minuscules.
lstrip ( ) : supprime certains octets en début d'un tableau d'octets.
maketrans ( ) : construit un tableau d'octets de cryptage.
partition ( ) : fractionne un tableau d'octets en fonction d'un séparateur.
removeprefix ( ) : supprime le début d'un tableau d'octets.
removesuffix ( ) : supprime la fin d'un tableau d'octets.
replace ( ) : remplace des octets par d'autres dans un tableau d'octets.
rfind ( ) : retourne la dernière occurrences dans un tableau d'octets.
rindex ( ) : retourne la dernière occurrences dans un tableau d'octets.
rjust ( ) : retourne un tableau d'octets justifié à droite.
rpartition ( ) : retourne une fin d'un tableau d'octets.
rsplit ( ) : retourne la liste des séquences d'un tableau d'octets.
rstrip ( ) : supprime certains octets en fin d'un tableau d'octets.
split ( ) : retourne la liste des mots d'un tableau d'octets.
splitlines ( ) : retourne la liste des sauts de ligne d'un tableau d'octets.
startswith ( ) : teste le début d'un tableau d'octets avec un modèle.
strip ( ) : supprime certains octets aux extrémités d'un tableau.
swapcase ( ) : inverse les majuscules et les minuscules.
title ( ) : fait commencer tous les mots d'un tableau par une majuscule.
translate ( ) : modifie les octets selon une table de cryptage.
upper ( ) : retourne tous les octets en majuscules.
zfill ( ) : ajoute des 0 en début de d'un tableau d'octets.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la LOGITHEQUE de MON PYTHON PAS A PAS
vous trouvez des suggestions de projets simples et classiques pour
ooo
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
ooo
la programmation récréative avec le langage PYTHON 3
avec un exemple de résolution à télécharger pour vous inspirer.