oujood.com

Comment écrire dans un fichier existant?

Dans ce tutoriel, vous apprendrez différentes manières d'écrire des fichiers texte en Python.
Pour écrire dans un fichier texte en Python, vous devez suivre les étapes suivantes : Premièrement, ouvrir le fichier texte pour l'écriture (ou l'ajout) à l'aide de la fonction open(). Deuxièmement, écrire dans le fichier texte à l'aide de la méthode write() ou writelines(). Troisièmement, fermez le fichier à l'aide de la méthode close().

chercher |

Python Ecriture de fichier texte

Pour écrire dans un fichier texte en Python, vous devez suivre les étapes suivantes :

1. Tout d'abord, il faut ouvrir le fichier texte pour l'écriture (ou l'ajout) à l'aide de la fonction open().

Voici la syntaxe de base de la fonction open() :

f = open(file, mode)

La fonction open() accepte de nombreux paramètres. Mais nous allons nous concentrer sur les deux premiers :

Le paramètre file spécifie le chemin d'accès au fichier texte que vous souhaitez ouvrir en écriture.
Le paramètre mode spécifie le mode pour lequel vous voulez ouvrir le fichier texte.

Pour écrire dans un fichier texte, vous utilisez l'un des modes suivants :
Mode Description
w' Ouvre un fichier texte pour l'écriture. Si le fichier existe, la fonction en tronquera le contenu dès que vous l'ouvrirez. Si le fichier n'existe pas, la fonction crée un nouveau fichier.
'a' Ouvre un fichier texte pour y ajouter du texte. Si le fichier existe, la fonction ajoute le contenu à la fin du fichier.
+' Ouvre un fichier texte pour le mettre à jour (lecture et écriture).

La fonction open() renvoie un objet fichier qui possède deux méthodes utiles pour écrire du texte dans le fichier :

write() et writelines().
2. Deuxièmement, écrire dans le fichier texte à l'aide de la méthode write() ou writelines().

La méthode write() écrit une chaîne de caractères dans un fichier texte.
La méthode writelines() écrit une liste de chaînes de caractères dans un fichier en une seule fois.

La méthode writelines() accepte tout objet itérable, pas seulement une liste, donc vous pouvez passer un tuple de chaînes de caractères, un ensemble de chaînes de caractères, etc. à la méthode writelines().

Pour écrire une ligne dans un fichier texte, vous devez ajouter manuellement un nouveau caractère de ligne :
f.write('\n')
f.writelines('\n')

Exemples d'écriture dans un fichier texte

L'exemple suivant montre comment utiliser la fonction write() pour écrire une liste de textes dans un fichier texte :

  Copier le code

# liste string
lignes = ['J\'apprends', 'Comment écrire des fichiers texte en Python',
		 'avec le site oujood.com']
# chaine de caractère
c ='Ce fichier est destiné à des fins de test.\n'
'Bonne chance ! et merci.'
with open('lisez-moi.txt', 'w') as f :

# Écrire une chaine de caractère
    f.write(c)
# Écrire une liste
    for ligne in lignes :
        f.write(ligne)
        f.write('\n')
#Lecture et affichage du contenu du fichier
with open('lisez-moi.txt', 'r') as f :
    print(f.read())
Si le fichier lisez-moi.txt n'existe pas, la fonction open() va le créer comme un nouveau fichier.
Voici ci-après le même exemple, mais contrairement au précédent nous n'avons pas utilisé le mot clé with et donc il faut utilisé la fonction close() pour fermer le fichier une fois le travail terminé ou si on veut changer de mode d'accès au fichier.

  Copier le code

# liste string
lignes = ['J\'apprends', 'Comment écrire des fichiers texte en Python',
          'avec le site oujood.com']
# chaine de caractère
c = "Ce fichier est destiné à des fins de test.\n Bonne chance ! \n Merci.\n"
f = open('lisez-moi.txt', 'w')

# Écrire une chaine de caractère
f.write(c)
# Écrire une liste
for ligne in lignes :
    f.write(ligne)
    f.write('\n')
f.close() #fermeture pour chagement de mode
#Lecture et affichage du contenu du fichier
f=open('lisez-moi.txt', 'r')
print(f.read())
f.close() # fermeture fin de travail

L'instruction with elle-même assure l'acquisition et la libération appropriées des ressources. Donc il n'est pas nécessaire d'appeler file.close().


Exemple avec writelenes :

  Copier le code

# tuple de chaine de caractères string
lignes = ("J'apprends", "Comment écrire des fichiers texte en Python", "avec le site oujood.com")
# chaine de caractère
c="Ce fichier est destiné à des fins de test.\n Bonne chance ! \n Merci.\n"
with open("lisez-moi.txt", "w") as f :

# Écrire une chaine de caractère
    f.write(c)
# Écrire une liste
    for ligne in lignes :
        f.writelines(ligne)
        f.write("\n")
#Lecture et affichage du contenu du fichier
with open("lisez-moi.txt", "r") as f :
    print(f.read())

Ajouter un texte à un fichier texte

Pour ajouter des lignes à un fichier texte, vous devez ouvrir le fichier texte en mode ajout.

Lorsque le fichier est ouvert en mode ajout, le curseur est positionné à la fin du fichier. Les données en cours d'écriture seront insérées à la fin, après les données existantes. Voyons l'exemple ci-dessous pour clarifier la différence entre le mode écriture et le mode ajout.

L'exemple suivant ajoute de nouvelles lignes au fichier readme.txt :

  Copier le code

plus_lignes = ['Nous allons', 'Ajouter du texte', 'à la fin du fichier']
with open('lisez-moi.txt', 'a') as f:
    f.write('\n'.join(plus_lignes))
with open('lisez-moi.txt', 'r') as f:
    print(f.read())

Ecrire dans un fichier texte UTF-8

Pour ouvrir un fichier et écrire des caractères UTF-8 dans un fichier, vous devez passer le paramètre encoding='utf-8' à la fonction open().

L'exemple suivant montre comment écrire des caractères UTF-8 dans un fichier texte :

  Copier le code

quote = '一个成功的人是能够用人们扔来的砖头打下坚实基础的人。'

with open('quotes.txt', 'w', encoding='utf-8') as f :
    f.write(quote)
Si vous testez ce code sans le paramètre encoding vous obtiendrez l'erreur suivante:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-44: character maps to <undefined>





Voir aussi nos tutoriel :

border-spacing

Spécifie la distance entre les frontières des cellules adjacentes

fonction str_split

Convertit une chaîne de caractères en tableau

fonction strripos, strripos

Trouve la position de la derniére occurrence d'une chaîne dans une autre, de fa on insensible la casse