Lignes d'écriture en Python

Subodh Adhikari 10 octobre 2023
  1. Utilisez les méthodes write() et writelines() pour écrire du texte spécifié dans un fichier en Python
  2. Utilisez les méthodes write() et writelines() pour écrire des itérables dans un fichier en Python
Lignes d'écriture en Python

Ce tutoriel présentera et expliquera la différence entre les méthodes write() et writelines() en Python.

Utilisez les méthodes write() et writelines() pour écrire du texte spécifié dans un fichier en Python

La méthode write() attend une chaîne comme argument et l’écrit dans le fichier. Si nous fournissons une liste de chaînes, cela déclenchera une exception. La méthode writelines() attend un argument itérable. De plus, la méthode write() affiche la sortie mais ne fournit pas de caractère de nouvelle ligne, tandis que la méthode writelines() affiche la sortie et fournit un nouveau caractère de ligne à la fin de la chaîne. Il est important de noter que writelines() n’insère pas automatiquement une nouvelle ligne après chaque élément de l’itérable. Nous devons fournir une nouvelle ligne par nous-mêmes. Si nous avons beaucoup de lignes à écrire dans un fichier, writelines() pourrait être une meilleure option. Il fonctionne bien car il ne crée pas de chaîne concaténée temporaire, il se contente d’itérer sur les lignes.

Dans le programme ci-dessous, nous avons ouvert le fichier samplefile.txt en mode écriture. La variable lines est un tuple, c’est-à-dire une collection immuable de chaînes. Lorsque nous essayons d’exécuter le programme, une erreur de type exception est générée. Les arguments que nous avons fournis à la méthode write() sont un tuple qui a causé l’erreur. Ici, nous avons utilisé la méthode with pour la gestion des fichiers. Cette méthode offre une meilleure syntaxe et une meilleure gestion des exceptions. C’est donc une bonne pratique d’utiliser la méthode with le cas échéant. La méthode est utile car tous les fichiers ouverts seront fermés une fois terminé.

Exemple de code :

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open("samplefile.txt", "w") as f:
    f.write(lines)

Production:

TypeError: write() argument must be str, not tuple

Dans un contexte similaire, lorsque nous utilisons writelines(), le programme est exécuté avec succès, et un fichier nommé samplefile.txt est créé où lines est passé en argument à la méthode writelines().

Exemple de code :

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open("samplefile.txt", "w") as f:
    f.writelines(lines)

Production:

Good
Morning
Sunshine

Pour un même programme, les lignes multiples sont concaténées en une seule variable chaîne appelée lines_joined, qui est facilement acceptée comme argument pour la méthode write().

Exemple de code :

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines_joined = line1 + nl + line2 + nl + line3 + nl
with open("samplefile.txt", "w") as f:
    f.write(lines_joined)

Production:

Good
Morning
Sunshine

Utilisez les méthodes write() et writelines() pour écrire des itérables dans un fichier en Python

La méthode join() prend tous les éléments d’un itérable et les joint en une seule chaîne. Dans le programme ci-dessous, nous avons utilisé la méthode join() avec '\n' comme colle pour concaténer la chaîne en lines. C’est une meilleure approche pour la concaténation au lieu d’utiliser l’opérateur +.

Exemple de code :

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as f:
    f.write("\n".join(lines))

Production:

Hello
World

Il est moins efficace d’utiliser la méthode join() pour une liste de chaînes extrêmement longue. Dans un tel cas, une chaîne entièrement nouvelle et très longue est créée en mémoire avant de l’écrire. Ainsi, dans le programme ci-dessous, nous avons utilisé une expression génératrice pour écrire les chaînes dans la nouvelle ligne. Ici, les données sont écrites par morceaux.

Exemple de code :

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as f:
    for l in lines:
        f.write("%s\n" % l)

Production:

Hello
World

Le même programme que ci-dessus est implémenté via la méthode writelines(). Il utilise une expression génératrice et crée dynamiquement des chaînes terminées par une nouvelle ligne. La méthode writelines() itère sur cette séquence de chaînes et écrit chaque élément.

Exemple de code :

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as file:
    file.writelines("%s\n" % t for t in texts)

Production:

Hello
World

Article connexe - Python File