Tutoriel de open ( )
DESCRIPTION.
Ouvre un canal pour un fichier texte.
SYNTAXE.
FIC_Fichier = open ( fichier , attribut1 = valeur1 , ... , attributn = valeurn )
FIC_Fichier = ⇨ variable qui la recevra la valeur absolue [ OBLIGATOIRE ]
.open ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
fichier ⇨ Nom du fichier (ou descripteur) à ouvrir [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa valeur [ optionnel ]
REMARQUES.
fichier doit être un nom de fichier valide, ou un nombre entier désignant le descripteur de fichier à envelopper. fichier en plus du nom du fichier et son extension, peut/doit donner le chemin (absolu ou relatif) du répertoire contenant le fichier à ouvrir. Si c'est un descripteur de fichier qui est spécifié, il sera fermé en même temps que l'objet I/O renvoyé, sauf si closefd = False.
mode = choix précise dans quel mode le fichier doit être ouvert. Les fichiers ouvert en binaire (mode = "b") , retourne leurs enregistrements sous forme de Bytes sans décodage. Les fichiers ouvert en texte (mode = "t") , retourne leurs enregistrements sous forme de chaines de caractères, décodées soit en fonction de l'environnent soit en fonction de l'option de l'attribut encoding s'il est présent. choix peut prendre les valeurs suivantes :
"r" : fichier est ouvert en mode lecture. C'est le mode par défaut.
"w" : fichier est ouvert en mode écriture. Si un fichier de même nom existe, il est remplacé (effacé) par un fichier vide.
"x" : fichier est ouvert en mode écriture s'il n'existe pas. Si fichier existe, l'ouverture échoue, fichier est préservé dans son état.
"a" : fichier est ouvert en mode écriture. les nouveau enregistrement son placés à la fin du fichier.
"b" : fichier est ouvert en mode binaire.
"t" : fichier est ouvert en mode texte. C'est le mode par défaut.
"+" : fichier est ouvert en mode lecture et écriture, C'est à dire un création et modification en un seul appel.
"rt" : équivaut à mode = "r"; mode par défaut.
"r+b" : ouvre fichier en mode binaire, en lecture / écriture, sans le vider les enregistrements existant.
"w+b" : ouvre fichier en mode binaire, en lecture / écriture, en créant un nouveau fichier vide.
Une bonne pratique, et même la meilleure, et de toujours utiliser l'instruction with pour l'ouverture texte dans vos applications. En effet, l'emploi de with vous garantira une fermeture propre et correct du fichier, quelque soit la raison de la sortie du bloc initié par with, même si votre application a levé une exception, gérée ou non, durant l'ouverture d'un fichier. Il est donc conseillé de d'ouvrir un fichier comme ceci :
with open ( "nomdufichier" ) as FIL_Fichier :
for keng in FIL_Fichier :
print ( keng , end = "" )
A la sortie du bloc with, le fichier se ferme automatiquement puisque vous avez travaille avec l'objet FIL_Fichier. Notez enfin qu'il est possible de savoir si un fichier est fermé avec FIL_Fichier.closed qui retourne True si FIL_Fichier est fermé et False dans le cas contraire.
Voir l'instruction with pour plus de détails ...
Les variables globales de type fichier (de données) sont identifiées dans le site par : FIC_.
Voir les conventions sur les variables utilisées dans ce site ...
UTILISER UN FICHIER TEXTE.
1. Créer un nouveau fichier texte avec ses premiers enregistrements.
FIL_Fichier = open ( "Essais.txt" , mode = "w" , encoding = "utf-8" ) # 01
FIL_Fichier.write ( "Première ligne du fichier ...\n" ) # 02
for keng in range ( 5 ) : # 03
ktexte = "La valeur de keng était de " + str ( keng ) + " ici.\n" # 04
FIL_Fichier.write ( ktexte ) # 05
FIL_Fichier.close ( ) # 06
01. Ouvre un fichier texte, nommé Essais.txt dans le répertoire courant et identifié par FIL_Fichier dans le programme jusqu'à sa fermeture. mode = "w" indique que le fichier est ouvert en mode écriture (write), si un fichier Essais.txt existait déjà, dans ce répertoire, il est écrasé (remplacé) et tous ses enregistrements sont perdus, puis nouveaux enregistrements pourront être ajoutés. encoding = "utf-8", précise que les caractères seront codés selon le standard utf-8.
02. Enregistre (écrit) la chaîne de caractères présente entre les parenthèses (\n permet de faire un saut de ligne) dans le fichier, identifié par FIL_Fichier, sur le support physique (disque dur, clé usb, ...).
03. Créé un bloc d'instructions qui sera exécuté 5 fois.
04. Créé une chaine de caractères nommée ktexte.
05. Enregistre (écrit) la chaîne de caractères affectée à la variable ktexte à la suite des caractères précédents dans le fichier correspondant à FIL_Fichier.
06. Ferme (casse le lien) le fichier ouvert.
2. Ajouter des enregistrements dans un fichier texte.
FIL_Nom = open ( "Essais.txt" , mode = "a" , encoding = "utf-8" ) # 01
for keng in range ( 5 ) : # 02
ktexte = "Nouvelle ligne numéro " + str ( keng + 1 ) + " ici.\n" # 03
FIL_Nom.write ( ktexte ) # 04
FIL_Nom.close ( ) # 05
01. Ouvre un fichier texte, nommé Essais.txt dans le répertoire courant et identifié par FIL_Nom.. On peut changer le nom de la variable identifiant le fichier dans le programme, c'est le nom du fichier sur le support physique qui est important. mode = "a" indique que le fichier est ouvert en mode ajout (append), de nouveaux enregistrements pourront être ajoutés à la suite de ceux déjà présents dans le fichier texte. Si ce fichier n'existe pas, il est créé, contrairement à mode = "w" qui écraserai un fichier de même nom.
02. Créé un bloc d'instructions qui sera exécuté 5 fois.
03. Créé une chaine de caractères nommée ktexte.
04. Enregistre (écrit) la chaîne de caractères affectée à la variable ktexte à la suite des caractères précédents dans le fichier correspondant à FIL_Nom.
05. Ferme (casse le lien) le fichier ouvert.
3. Lire des enregistrements d'un fichier texte ligne par ligne.
FIL_Fichier = open ( "Essais.txt", encoding = "utf-8" ) # 01
keng = FIL_Fichier.readline ( ) # 02
print ( keng ) # 03
print ( FIL_Fichier.readline ( ) ) # 04
print ( FIL_Fichier.readline ( ) ) # 05
FIL_Fichier.close ( ) # 06
01. Ouvre un fichier texte, nommé Essais.txt dans le répertoire courant et identifié par FIL_Fichier. Comme on ne le précise pas, Python utilise le mode d'ouverture par défaut, c'est-à-dire mode = "r", qui spécifie que le fichier est ouvert en mode lecture (read). Si ce fichier n'existe pas une exception est levée.
02. Python affecte à la variable keng un str ( ) contenant tous les premiers caractères présents dans le fichier texte, correspondant à FIL_Fichier, jusqu'au premier identifiant de saut ligne (\n par défaut) trouvé.
03. Affiche la valeur de la variable keng à l'écran.
04. Affiche tous les caractères présents dans le fichier texte, jusqu'à identifiant de saut ligne suivant.
05. Affiche tous les caractères présents dans le fichier texte, jusqu'à identifiant de saut ligne suivant.
06. Ferme le fichier ouvert identifié dans le programme par FIL_Fichier.
4. Lire des enregistrements d'un fichier texte caractère par caractère.
FIL_Fichier = open ( "Essais.txt" , "r" , encoding = "utf-8" ) # 01
print ( FIL_Fichier.read ( 4 ) ) # 02
print ( FIL_Fichier.read ( ) ) # 03
FIL_Fichier.close ( ) # 04
01. Ouvre un fichier texte, nommé Essais.txt dans le répertoire courant et identifié par FIL_Fichier. Le mode d'ouverture peut être passé sans être nommé s'il est en deuxième argument , "r" qui spécifie que le fichier est ouvert en mode lecture (read).
02. Lit et affiche les 4 premiers caractères présents dans le fichier car la valeur 4 est passée à la méthode .read ( ).
03. Lit tous les caractères restant (après les 4 premiers) enregistrés dans le fichier car aucun paramètre n'est passé à la méthode .read ( ).
5. Placer les enregistrements d'un fichier texte dans une liste.
FIL_Fichier = open ( "Essais.txt" , "r" , encoding = "utf-8" ) # 01
LST_Eng = FIL_Fichier.readlines ( ) # 02
print ( LST_Eng ) # 03
FIL_Fichier.close ( ) # 04
01. Ouvre, en lecture, un fichier texte, nommé Essais.txt. identifié par FIL_Fichier.
02. Lit chaque lignes d'enregistrement , une à une, présentes dans le fichier texte et les affecte comme éléments de la list ( ) nommée LST_Eng. Une ligne est représentées par l'identifiant du saut de ligne (\n par défaut).
03. Affiche la list ( ) LST_Eng à l'écran.
04. Ferme le fichier.
6. Utiliser un fichier texte comme itérateur.
FIL_Fichier = open ( "Essais.txt" , encoding = "utf-8" ) # 01
for keng in FIL_Fichier : # 02
print ( keng , end = "" ) # 03
FIL_Fichier.close ( ) # 04
01. Ouvre, en lecture, un fichier texte, nommé Essais.txt. identifié par FIL_Fichier.
02. Créé une boucle d'instructions qui se répéteront autant de fois qu'il y a de sauts de ligne dans le fichier, et en affectant la variable keng avec le str ( ) correspondant à la ligne d'enregistrement.
03. Affiche la valeur de la variable keng à l'écran. Comme les lignes contiennent déjà un saut de ligne (\n), on précise de ne pas en ajouter un autre en modifiant la valeur par défaut de l'attribut end = "" de la méthode print ( ).
04. Ferme le fichier.
LES ATTRIBUTS DE OPEN.
Tout attribut utilisé doit être implicitement nommé.
mode = choix
précise dans quel mode le fichier doit être ouvert. Les fichiers ouvert en binaire (mode = "b") , retourne leurs enregistrements sous forme de Bytes sans décodage. Les fichiers ouvert en texte (mode = "t") , retourne leurs enregistrements sous forme de chaines de caractères, décodées soit en fonction de l'environnent soit en fonction de l'option de l'attribut encoding s'il est présent. choix peut prendre les valeurs suivantes :
"r" : fichier est ouvert en mode lecture. C'est le mode par défaut.
"w" : fichier est ouvert en mode écriture. Si un fichier de même nom existe, il est remplacé (effacé) par un fichier vide.
"x" : fichier est ouvert en mode écriture s'il n'existe pas. Si fichier existe, l'ouverture échoue, fichier est reste dans son état.
"a" : fichier est ouvert en mode écriture. les nouveau enregistrement son placés à la fin du fichier.
"b" : fichier est ouvert en mode binaire.
"t" : fichier est ouvert en mode texte. C'est le mode par défaut.
"+" : fichier est ouvert en mode lecture et écriture, C'est à dire un création et modification en un seul appel.
"rt" : équivaut à mode = "r"; mode par défaut.
"r+b" : ouvre fichier en mode binaire, en lecture / écriture, sans le vider les enregistrements existant.
"w+b" : ouvre fichier en mode binaire, en lecture / écriture, en créant un nouveau fichier vide.
buffering = choix
permet de configurer l'utilisation de l'espace tampon. choix peut prendre les valeurs suivantes :
0 : désactive le mode tampon. Seulement autorisé si fichier la était ouvert en binaire avec l'attribut mode = "b".
1 : le tampon est en ligne par ligne. Seulement autorisé si fichier la était ouvert en texte avec l'attribut mode = "t".
x : avec x>1. x (un entier supérieur à 1) donne la taille fixe du tampon en octets.
encoding = choix
indique le type d'encodage des caractères dans le fichier texte. Par défaut c'est le type utilisé par la configuration de l'utilisateur (matériel, os, plateforme, ...), en général UTF-8.
errors = choix
précise comment les erreurs d'encodage seront traitées par Python. choix peut prendre les valeurs standards suivantes, mais tous les noms gestionnaires erreurs sont disponible. :
None : lève un ValueError, mode par défaut.
"strict" : lève un ValueError, c'est à dire le même comportement que errors = None.
"ignore" : Ignore les erreurs d'encodage.
"replace" : Insère un marqueur de substitution à la place des données mal encodés (ex. insère "?").
"surrogateescape" : remplace les octets incorrectes par un caractère privés.
Les valeurs d'attributs présentés ci-dessus sont les attributs standards,
newline = choix
controle le fonctionnement du mode universal newline. En lecture, choix peut prendre les valeurs suivantes :
None : Les lignes lues peuvent terminer par '\n', '\r', ou '\r\n', qui sont remplacés par '\n', avant d'être données à l'appelant.
"*" : Les fin de lignes ne sont pas remplacés.
"autre" : Les lignes sont seulement terminées par la chaîne donnée dans "autre".
En écriture, choix peut prendre les valeurs suivantes :
None : chaque '\n' est remplacé par un séparateur de ligne.
"*" : aucun '\n' n'est remplacé.
"autre" : chaque '\n' est remplacé par la chaîne donnée dans "autre".
closefd = choix
indique si le descripteur de fichier sera fermé. Si closefd = False ferme le descripteur de fichier fourni, mais le fichier reste ouvert. closefd = False ne doit être employé qu'avec un descripteur de fichier. Si fichier est un nom de fichier c'est closefd = True (mode par défaut) qui doit être utilisé, si l'on souhaite préciser un comportement pour closefd.
opener = choix
peut être utilisé en fournissant un appelable comme opener. Le descripteur de fichier de cet objet fichier sera alors obtenu en appelant opener avec (file, flags). opener doit renvoyer un descripteur de fichier ouvert.
EXEMPLES.
FIC_Fichier = open ( "Essais.txt" )
Ouvre le fichier Essais.txt qui se trouve dans le répertoire courant en mode lecture. Si ce fichier est absent, il est créé.
FIC_Fichier = open ( "lecteur/Document/Essais.txt" )
Ouvre le fichier Essais.txt qui se trouve dans le répertoire Document du lecteur précisé (selon l'OS de l'utilisateur) courant en mode lecture.
FIC_Fichier = open ( "Essais.txt" , mode = "r" )
Ouvre le fichier Essais.txt en mode lecture. Si ce fichier est absent, il est créé.
FIC_Fichier = open ( "Essais.txt" , mode = "w" )
Créé et ouvre le fichier Essais.txt en mode écriture. Si un fichier de ce nom existait, il sera d'abord supprimé.
FIC_Fichier = open ( "Essais.txt" , mode = "a" )
Ouvre le fichier Essais.txt en mode écriture. Les nouveau enregistrement seront écrit à la suite des enregistrements précédents.
FIC_Fichier = open ( "Essais.txt" , mode = "r" , encoding = "utf-8" )
Ouvre le fichier Essais.txt en mode lecture. Si ce fichier est absent, il est créé. Les caractères seront encodés selon la norme utf-8. Il est conseillé de toujours préciser l'encodage, et si possible prendre "utf-8" comme standard.
MÉTHODES SPÉCIFIQUES AUX FICHIERS TEXTE.
close ( ) : vide la mémoire tampon et ferme le fichier.
read ( ) : lit le nombre de caractères demandés.
readline ( ) : lit tous les caractères jusqu'au saut de ligne suivant.
readlines ( ) : retourne les lignes présentes dans une list ( ).
seek ( ) : modifie l'emplacement du pointeur dans le fichier.
tell ( ) : retourne la position actuelle du pointeur dans le fichier.
write ( ) : écrit dans le fichier une nouvelle la chaîne de caractères.
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.