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 :

Lecture lignes par lignes d'un fichier-Question "multi-OS"


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    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
    Par défaut Lecture lignes par lignes d'un fichier-Question "multi-OS"
    Bonjour,
    je voulais savoir si lors de la lecture d'un fichier lignes par lignes, Python se chargeait de nettoyer les caractères de fin de lignes, sachant qu'il y a des différencas entre Unix et Windows ?

  2. #2
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Par défaut
    Comme d'habitude, il suffit de lire la doc... [1][2]
    a newline character (\n) is left at the end of the string
    A trailing newline character is kept in the string
    [1] http://docs.python.org/tutorial/inpu...f-file-objects
    [2] http://docs.python.org/library/stdty...#file.readline

  3. #3
    Membre Expert
    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
    Par défaut
    N'ayant jamais eu la chance de tomber sur un texte qui explique clairement les fins de lignes avant que je sois confronté au problème, ni même aprés, j'ai longtemps eu le problème de ne pas savoir précisément ce qui se passait en fin de ligne. Je déduisais à partir de ce que j'observais comme résultat des instructions print après lecture par readline() ou readline()[:-1], mais c'était pénible.
    Même les explications comme celles qu'a données Desintegr en référence ne me satisfont pas pleinement, j'aime bien voir et vérifier moi-même très précisément ce qui se passe.

    J'ai fini par trouver un moyen de faire afficher tous les caractères d'une ligne quand elle est lue, y compris ceux qui indiquent la fin de ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    f = open('fichier')
    flignes = []
    rd = 'go'
    while rd:
        rd = f.readline()
        flignes.append(rd)
    f.close()
     
    for u in xrange(len(flignes)):
        print flignes[u:u+1]

    PS

    En étendant à d'autres problématiques,
    l'avantage d'afficher ainsi le contenu exact de ce qui est lu, c'est, quand on analyse un code source d'une page web, on voit aussi tous les signes de tabulations tels qu'ils existent dans le code source. C'est très pratique pour compter la position précise de tel ou tel motif dans une ligne et faire des découpages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import urllib
     
    f = urllib.urlopen('http://www.horlogeparlante.com/')
    fh = []
    rd = 'go'
    while rd:
        rd = f.readline()
        fh.append(rd)
    f.close()
     
    for u in xrange(300,312):
        print u, fh[u:u+1]
     
    print
    print 'fh[300][27:] =',fh[300][27:]
    300 ['\t\t\t\t\t\t\t\t\t\t\t\t<a href="#sun">Soleil</a><br />\n']
    301 ['\t\t\t\t<a href="#moon">Lune</a><br />\n']
    302 ['\t\t\t\t\t\t\t\t<a href="#geolocalisation">Géolocalisation</a><br />\n']
    303 ['\t\t\t\t<a href="#other-city">Autre(s) ville(s)</a><br />\n']
    304 ['\t\t\t\t<a href="#informations">Autres informations</a><br />\n']
    305 ['\t\t\t</div><!-- Fin liens rapides-->\n']
    306 ['\t\t\t<div class="rub-nav-left">A propos de l\'heure</div>\r\n']
    307 ['<div class="donnee-nav-left">\r\n']
    308 ['\t<a href="heure-ete-heure-hiver.php">Heure d\'été - heure d\'hiver</a><br />\r\n']
    309 ['\t<a href="timezones/zone-europe.htm">Zones horaires</a><br />\r\n']
    310 ['</div><!-- calendriers-->\r\n']
    311 ['<br />\r\n']

    fh[300][27:] = Soleil</a><br />
    Dans l'exemple ci-dessus, on peut voir que des lignes terminent par '\n' et d'autres par '\r\n'. D'où l'intérêt de pouvoir visualiser exactement les choses.

  4. #4
    Membre éprouvé

    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
    Par défaut
    Nickel ta réponse eyquem.

    Merci.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/07/2010, 21h16
  2. Lecture d'un fichier ligne par ligne
    Par kabouns dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2006, 15h46
  3. Réponses: 20
    Dernier message: 09/02/2006, 09h45
  4. [lecture d'un fichier] ligne par ligne
    Par pitit777 dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 11h22
  5. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02

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