IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Récupérer les lignes d'un fichier-Solution multi OS


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut Récupérer les lignes d'un fichier-Solution multi OS
    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 ?

  2. #2
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    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.

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    C'est vrai. Je ne sais pas pourquoi j'ai posé cette question...

  4. #4
    Membre éclairé
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Points : 848
    Points
    848
    Par défaut
    C'est rien, cela arrive !

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    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,
    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
    c'est plus franchement incorrect.
    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

    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()
    Résultats:
    ['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.

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Tes précisions sont justes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Récupérer les lignes d'un fichier texte
    Par Titiso dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/08/2014, 19h15
  2. Réponses: 2
    Dernier message: 19/01/2011, 15h41
  3. Réponses: 6
    Dernier message: 20/07/2007, 15h49
  4. Fichier récupérer les lignes
    Par Fluxy dans le forum Langage
    Réponses: 1
    Dernier message: 24/02/2007, 13h57
  5. Récupérer les infos sur un fichier audio
    Par Halleck dans le forum Windows
    Réponses: 13
    Dernier message: 17/04/2004, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo