Benjamin Monmege et François Brucker
Codage = transformer une information en nombre
Base = octet, équivalent à un byte, 8 bits, 0xFF en hexadécimal, 255 en décimal
U+XXXXXX
symboles rangés en plans de 2 octets (0x0000 à 0xFFFF en hexadécimal)
émergence des formats utf (unicode transformation format), dont utf-8
é
0xE9 = 233
. Python : ord('é')
0xC3
et 0xA9
. Python : 'é'.encode('utf8')
bin(0xC3)
rend ‘0b11000011’ et bin(0xA9)
rend ‘0b10101001’110
) et des 6 dernier bits du deuxième (qui commence par 10
). On obtient ainsi 00011101001
qui est : int('00011101001', 2)
et vaut : 233. Ouf, la boucle est bouclée on retrouve bien le code unicode de é
.Ce format a été choisi parce que :
fichiers binaires : nécessite un outil spécial pour les utiliser, c’est à dire un moyen de passer de l’octet à sa signification. Peuvent stocker des images, des vidéos, des programmes… Extension diverses possibles.
file
open
qui ouvre un fichierdeux paramètres obligatoires :
la façon dont on veut l’ouvrir :
'r'
: en lecture. Tête de lecture placée au début du fichier'w'
: en écriture. Tête d’écriture placée au début du fichier. Donc si le fichier contenait déjà des choses elles sont supprimées'a'
: en écriture à la fin du fichier. Tête d’écriture placée à la fin du fichier. Donc si le fichier contenait déjà des choses elles ne sont pas suppriméesread
ou encore readline
si c’est un fichier textewrite
close
Toutes les méthodes de fichiers sont décrites dans le module io (pour In et Out)
Supposons que j’ai un fichier texte nommé haiku.txt
contenant :
dans le vieil étang,
une grenouille saute,
un ploc dans l'eau.
Bashô.
f = open("haiku.txt", "r") # ouverture d'un fichier texte en lecture dans le même dossier que le ficheir python
poeme = f.read()
f.close()
print(poeme)
Nota Bene : Ne confondez pas le nom du fichier et son contenu. Le nom du fichier, ici Haiku.txt
, nous permet de l’ouvrir en lecture grace à la commande open
. Son contenu est ensuite mis dans la variable poeme
grace à la méthode read
.
f = open("haiku.txt", "r")
for ligne in f: # boucle sur les lignes
print(ligne)
f.close()
Nota Bene : Notez la ligne vide vide entre deux affichages. Ceci est dû au fait que chaque ligne du fichier contient déjà un retour à la ligne. Plus celui qui est ajouté automatiquement à la fin de l’instruction python
.
f = open("haiku.txt", "a")
f.write("\n")
f.write("1644-1694")
f.close()
On ajoute un retour à la ligne, puis les dates de naissance et de mort de Bashô.
f = open("haiku.txt", "w")
f.write("Noël est aux portes\n")
f.write("les dindes et les pintades\n")
f.write("rentrent dans les fours")
f.write("\n")
f.write("Salim Bellen")
f.close()
Une fois ouvert le fichier en écriture, tout son contenu précédent est perdu.
with
Vous verrez parfois l’utilisation du mot clé python with
qui permet d’écrire :
with open("haiku.txt", "a") as f:
f.write("\n")
f.write("1644-1694")
with
le résultat de l’ouverture du fichier est appelé f
with
on ferme f
with
qui s’en occupe pour nous.'b'
suivi de ce que l’on veut faire avec.haiku.txt
en lecture sous la forme d’un fichier binaire, puis place le contenu de celui-ci dans la variable x
f = open("haiku.txt", "br")
x = f.read()
type(x)
: bytes
(une suite d’octets)print(x)
: b"dans le vieil \xc3\xa9tang,\nune grenouille saute,\nun ploc dans l'eau.\n\nBash\xc3\xb4.\n"
texte = x.decode("utf-8")