top of page
Rechercher

Python newline

  • Photo du rédacteur: Renaud Jordi
    Renaud Jordi
  • 10 oct.
  • 2 min de lecture

Python : with open(”file.txt”) as f:

Vous n’avez rien oublié ?


Premièrement, c'est une bonne chose que d’utiliser le with avec l’ouverture de fichier. L’évènement de sortie de bloc fermera automatiquement le fichier. => La gestion du contexte avec with fera sûrement l’objet d’un prochain article ;)


Ensuite, pour bien faire, il manque l’encoding. Parce qu’il n’existe pas de “texte brut” en informatique (uniquement des 0 et des 1 ou des nombres de 0 à 255 😉), la manière de convertir cet octet en caractère doit bien être spécifié. Certes, l’ASCII est éminemment répandu, et convient dans la majorité des cas pour du texte simple (sans accent, sans caractère spécial…) mais pour le reste, vous pourriez avoir des surprises 😁. S’il est omis, l’encoding utilisé sera celui par défaut sur votre plateforme - accessible avec locale.getencoding().

C’est aussi l’occasion de relancer un ancien article sur ce sujet :)


Dernier point, plus implicite, la gestion des séparateurs de lignes (les fameux retours chariot).

Là encore, 3 conventions existent pour identifier une nouvelle ligne.

  • Le \r pour Mac

  • Le \r\n pour Windows

  • Le \n pour Unix


Python, de son côté, considère ‘\n’ comme fin de ligne universel dans ses chaînes de caractères (str) et s’occupe lui-même de la conversion à la lecture, comme à l’écriture. Le paramètre optionnel newline de la fonction open peut ainsi prendre 5 valeurs :

  • None (par défaut) : convertit les ‘\r’, ‘\r\n’ et ‘\n’ en ‘\n’ à la lecture et, en écriture, les ‘\n’ en retours chariots spécifiés par la plateforme - que l’on peut aussi retrouver avec os.linesep

  • ‘’ : ne fait aucune conversion à la lecture ou à l’écriture

  • ‘\n’ : convertit les ‘\n’ en ‘\n’ à la lecture et les ‘\n’ en ‘\n’ à l’écriture 😀

  • ‘\r’ : convertit les ‘\r’ en ‘\n’ à la lecture et les ‘\n’ en ‘\r’ à l’écriture

  • '\r\n’ : convertit les ‘\r\n’ en ‘\n’ à la lecture et les ‘\n’ en ‘\r\n’ à l’écriture


Vous avez donc bien fait de ne pas spécifier le paramètre newline 😀 La valeur par défaut None est quand même bien pratique 🙂 Cela permet de prendre n’importe quel fichier texte, le traiter en utilisant uniquement des ‘\n’ et sauvegarder dans un format compatible avec votre système 😎.


Tout ça pour ça ? Pour dire que la valeur par défaut d’un paramètre optionnel est déjà bien configuré ?

Oui 🙂

Mais maintenant, vous savez que ça existe, et pourquoi vos lignes se terminent par ‘\n’ en Python alors que votre fichier est en ‘\r\n’ 🙂


À vos claviers 🙂

ree

 
 

© LH&TECH, tous droits réservés.

bottom of page