Bonjour,
je voulais savoir si la méthode splitlines était multi-os. Autrement dit, permet-elle de récupérer dans un OS donné les lignes d'un fichier fait avec un OS quelconque éventuellement différent ?
Bonjour,
je voulais savoir si la méthode splitlines était multi-os. Autrement dit, permet-elle de récupérer dans un OS donné les lignes d'un fichier fait avec un OS quelconque éventuellement différent ?
Ben pourquoi elle ne le serait pas ? J'ai fait un rapide test sous windows et splitlines reconnait même \r donc ça me parait bien.
C'est vrai. Je ne sais pas pourquoi j'ai posé cette question...
Je trouve que telle qu'elle est posée, la question laisse une impression de confusion.
Déjà le titre ne me plaît pas trop parce que, strictement parlant, il n'y a pas de lignes dans un fichier: il n'y a qu'une succession de caractères au sein desquelles se trouvent des symboles de nouvelle ligne (newlines). Et pour accéder au contenu d'un fichier, il n'y a fondamentalement qu'une méthode: read() , qui s'applique sur un fichier. On ne peut pas accéder à des lignes qui seraient toutes prêtes déjà dans le fichier.
Mais bon, les nécessités de la concision d'un titre excusent un tel raccourci.
Par contre ensuite,
c'est plus franchement incorrect.savoir si la méthode splitlines était multi-os. Autrement dit, permet-elle de récupérer dans un OS donné les lignes d'un fichier fait avec un OS quelconque
La méthode splitlines() n'est pas une méthode de fichier, elle ne peut donc pas s'appliquer sur un fichier pour en "récupérer" les lignes, qui n'y existent que virtuellement délimitées par des newlines.
Et il ne me semble pas que la méthode splitlines() ait à voir avec l'OS lors du fonctionnement qui est le sien, c'est à dire en tant que méthode de chaînes.
La seule question légitime qui puisse se poser est à mon avis:
une fois qu'on dispose d'une chaîne, quelle que soit la manière dont on l'a obtenue (que ce soit par lecture d'un fichier ou autrement), splitlines() permet-elle d'extraire des lignes d'une chaîne quelle que soit le(s) symbole(s) par le(s)quel(s) sont codées les newlines dans cette chaîne ?
Répondre à cette question peut se faire sous n'importe quel OS sans avoir à faire intervenir un fichier
Résultats:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 print 'Mont Blanc\nAigoual\nAneto'.splitlines() print 'Mediterranee\rPacifique\rBehrens'.splitlines() print 'Amazone\r\nLoire\r\nDienpr'.splitlines()
['Mont Blanc', 'Aigoual', 'Aneto']
['Mediterranee', 'Pacifique', 'Behrens']
['Amazone', 'Loire', 'Dienpr']
D'ailleurs, splitlines() est tellement apte à extraire les lignes de n'importe quelle chaîne quels que soient les symboles de newlines qu'on peut même lui demander de les garder dans le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 print 'Mont Blanc\nAigoual\nAneto'.splitlines(True) print 'Mediterranee\rPacifique\rBehrens'.splitlines(1) print 'Amazone\r\nLoire\r\nDienpr'.splitlines(1)['Mont Blanc\n', 'Aigoual\n', 'Aneto']
['Mediterranee\r', 'Pacifique\r', 'Behrens']
['Amazone\r\n', 'Loire\r\n', 'Dienpr']
-------------------------------------
Ensuite, le problème de savoir si la méthode de fichier read() est capable de lire n'importe quelle chaîne constituant un fichier, quels que soient les symboles de newlines, est une autre question.
En fait la PEP 278
http://www.python.org/dev/peps/pep-0278/
nous renseigne que depuis Python 2.3 , le Universal Newline Support permet à Python de lire n'importe quel fichier, quels que soient les newlines utilises dans le fichier.
Mais attention, quand ce dispositif est activé, la chaîne obtenue après lecture comporte toujours des newlines \n, me semble-t-il.
C'est seulement en ouvrant un fichier en lecture 'rb' qu'on peut obtenir, après lecture, une chaîne avec les newlines originales telles qu'elles sont dans le fichier.
splitlines() intervient après seulement.
Tes précisions sont justes.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager