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 fichier texte


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Par défaut lecture fichier texte
    Bonjour,

    J'ai encore des problèmes avec l'écriture et la lecture de fichiers textes depuis python.
    J'ai essayé de suivre un tutoriel tout simple pour lire un fichier texte. Je suis les instructions à la lettre : je crée un fichier texte à l'aide d'un éditeur sans mise en forme, dans lequel j'écris "Message" par exemple.
    Puis je tape les commandes pour lire mon fichier comme indiquées, et j'obtiens un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> mon_fichier = open("/Users/Lea/Desktop/Fichier.txt", "r")
    >>> contenu = mon_fichier.read()
    Traceback (most recent call last):
      File "<pyshell#78>", line 1, in <module>
        contenu = mon_fichier.read()
      File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
    J'ai pourtant pris garde à ne pas écrire de caractère spécial dans mon fichier texte.
    Pourriez-vous m'indiquer d'où vient le problème ?

    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Un fichier "texte" est une suite de bytes (des octets dans 0..255) qu'un éditeur sera formater pour afficher avec une certaine fidélité le texte que vous avez pris la peine d'écrire.
    Pour s'en sortir, l'éditeur sera +/- obligé d'inclure des informations lui permettant de décoder ce "formatage" en plus de ce que vous avez tapé.
    Que vous insériez ou pas des caractères accentués ne change pas grand chose: ces informations seront là.

    Comme votre fichier ne devrait pas être bien gros, postez la sortie de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> s = "/Users/Lea/Desktop/Fichier.txt"
    >>> open(s, 'rb').read()
    Le "b" indique à Python de ne pas essayer de décoder le contenu: on devrait voir les "bytes".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Par défaut
    Bonjour,

    Merci, en effet cette fois je récupère le texte sous forme de bytes, mais je peux difficilement l'exploiter ensuite...
    Pourquoi certains peuvent-ils y accéder tel quel, sans passer par les bytes ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> mon_fichier = open("fichier.txt", "r")
    >>> contenu = mon_fichier.read()
    >>> print(contenu)
    C'est le contenu du fichier. Spectaculaire non ?
    >>> mon_fichier.close()

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Essaye comme ceci, peut-être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    contenu = mon_fichier.read().decode('utf8', 'replace')

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour,

    Si tu veux exploiter le contenu de ton fichier texte, avec les accents, il faut spécifier l'encodage à l'ouverture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_fichier = open("fichier.txt", "r",encoding=<l'encodage correspondant à ton éditeur>)
    Ou alors, tu laisse lire le contenu sous forme d'une suite de bytes, comme suggéré et
    tu transforme en un chaîne (d'office unicode sous python 3):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    contenu = contenu.decode('<l'encodage correspondant à ton éditeur>")
    Sous Windows, en Europe occidentale, le codage et généralement windows-1252 et sous Linux utf-8 ou latin-1.
    Mais la plupart des éditeurs de textes permettent d'enregistrer un fichier comme tu le veux.

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Par défaut
    J'ai un message d'erreur pour une méthode comme pour l'autre, mais je ne m'y prends peut être pas comme il faut ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> mon_fichier = open("/Users/Lea/Documents/INFO/TD8.txt", "r")
    >>> contenu = mon_fichier.read().decode('utf8', 'replace')
    Traceback (most recent call last):
      File "<pyshell#24>", line 1, in <module>
        contenu = mon_fichier.read().decode('utf8', 'replace')
    AttributeError: 'str' object has no attribute 'decode'
     
     
    >>> mon_fichier = open("fichier.txt", "r",encoding=<utf-8>)
    SyntaxError: invalid syntax

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Vous êtes sous Python3. L'encoding par défaut devrait être "utf-8".
    Par contre, je ne vois toujours pas la sortie de votre fichier "binaire":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> s = "/Users/Lea/Desktop/Fichier.txt"
    >>> open(s, 'rb').read()
    '0xff' en position 0 pourrait être un BOM crée par votre éditeur.
    Et pas facile de savoir "comment décoder" un truc sans voir à quoi il ressemble.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Lecture fichier texte
    Par vince-60 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/04/2006, 14h15
  2. [VB]Probleme lecture fichier text et affichage
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 08h46
  3. lecture fichier texte et ...
    Par Nils30 dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2006, 11h55
  4. lecture fichier text et renvoi du contenu en byte *
    Par JulienT dans le forum Réseau
    Réponses: 3
    Dernier message: 02/01/2006, 13h21
  5. Lecture fichier text
    Par krfa1 dans le forum ASP
    Réponses: 13
    Dernier message: 25/11/2005, 08h00

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