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 d'un fichier texte


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut Lecture d'un fichier texte
    Bonjour,

    Dans mon programme, je crée un fichier dans lequel j'enregsitre des variables saisies par l'utilisateur; Les variables s'enregistrent correctemment (car je les réutilisent dans la suite de mon programme)

    Le probléme est dés que j'ouvre le fichier en question, des caractéres bizarre apparaissent (€]q), au lieu d'avoir les valeurs des différentes variables.

    Note: Je travaille sous linux, Debian.

    Comment résoudre ce probléme?

    Voici une partie de mon programme:

    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
    16
     
    for i in range(0,4):
        Lststp.append(1)
     
    Lststp[0]=Nom
    Lststp[1]=str(var1)
    Lststp[2]=str(var2)
    Lststp[3]=str(var3)
    Lststp[4]=str(var4)
     
    doss = os.getcwd()
    nvdoss=doss+"\Parametre"
    if not os.path.exists(nvdoss):
        os.makedirs(nvdoss)
        with open(nvdir+"/test.txt","wb")as file:
             pickle.dump(Lststp,file)
    En vous remerciant.

    Cordialement.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par Cerise22 Voir le message
    Le probléme est dés que j'ouvre le fichier en question, des caractéres bizarre apparaissent (€]q), au lieu d'avoir les valeurs des différentes variables.
    Si vous écrivez votre fichier avec pickle, il faut le lire avec pickle... Et si vous voulez un format plus lisible, utilisez autre chose: json, xml, ini,...

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

  3. #3
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    J'ai utilisé le module pickle pour enregistrer des objets Python dans des fichiers et les recharger ensuite. Dans le programme, je fais bien la lecture avec pickle aussi.

    J'ai vu dans un cours pour apprendre python que : "Le fichier que Python va écrire ne sera pas très lisible si vous essayez de l'ouvrir"

    Donc comment pourrais-je rendre ce fichier .txt (enregistré en pickle) lisible?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par Cerise22 Voir le message
    Donc comment pourrais-je rendre ce fichier .txt (enregistré en pickle) lisible?
    Vous le lisez avec pickle ou vous choisissez un autre format.
    De toutes façons, quelque soit le format utilisé, vous aurez des avantages et des inconvénients en fonction des opérations à réaliser.
    JSON ou les fichiers .INI ont des structures de base proche des types de base Python.
    XML permettra de construire des structures plus complexes.
    Dans tous les cas, ces formats pourront être visualisés et modifiés avec un simple éditeur de texte.
    pickle est juste fait pour sauvegarder et restaurer l'état d'objets Python. Seul Python sait quoi en faire: inutile d'essayer de les lire avec autre chose.

    A vous de choisir ce qui est adapté (celui qui vous évitera d'écrire du code) à ce que vous voulez faire.

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

  5. #5
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Vous le lisez avec pickle
    C'est à dire?

    Dans tous les cas, ces formats pourront être visualisés et modifiés avec un simple éditeur de texte
    Justement j'ai essayé de visualiser les données du fichier, avec un éditeur de texte , et cela fait apparaitre des caractéres illisible

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par Cerise22 Voir le message
    Justement j'ai essayé de visualiser les données du fichier, avec un éditeur de texte , et cela fait apparaitre des caractéres illisible
    Comment faut-il vous expliquer que le format pickle n'est pas fait pour être "lisible"(*): vous devez utiliser d'autres formats.
    (*) en fait, c'est de l'ASCII justement pour pouvoir être lu... par un développeur qui sait le déchiffrer et non par un utilisateur final.

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

  7. #7
    Membre du Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Merci pour votre retour.

    J'ai opté pour un enregistrement sous fichier JSON.

    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
    16
     
    for i in range(0,3):
        Lstp.append(1)
     
    Lstp[0]=Nom
    Lstp[1]=str(var1)
    Lstp[2]=str(var2)
     
     
    with open("/Exp.txt","wb")as f:
             json.dump(Lststp,f)
    with open("/Exp.txt","rb")as f:
            Lst=json.load(file)
            Nom=Lst[0]
            var1=int(Lst[1])
            var2=0.0
    Mais lors de l'exécution j'obtiens comme message erreur:

    File "/usr/lib/python3.4/json/__init__.py", line 312, in loads

    s.__class__.__name__))

    TypeError: the JSON object must be str, not 'bytes'

    Comment résoudre ce message erreur ?

    En sachant aussi que j'ai tenté l'enregistrement avec le mode "w" mais j'obtiens:

    UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte

    Je ne vois pas comment faire pour envoyer des strings...

    En vous remerciant.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    C'est quand même pas si compliqué de "tester":
    écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> f = open('test.json', 'w')
    >>> json.dump([1, 'ééé', 'ààà'], f)
    >>> f.close()
    lire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> f = open('test.json', 'r')
    >>> json.load(f)
    [1, 'ééé', 'ààà']
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    bm
    bm est déconnecté
    Membre confirmé

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Points : 556
    Points
    556
    Billets dans le blog
    6
    Par défaut
    Python 3.4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d = {"person": "ç", "á": 'à', "ç": 'ã'}
    print (json.dumps(d, indent=4, sort_keys=True, ensure_ascii=False))
    {
    "person": "ç",
    "á": "à",
    "ç": "ã"
    }
    Python 2.7 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    d = {"person": "ç", "á": 'à', "ç": 'ã'}
    print (json.dumps(d, indent=4, sort_keys=True, ensure_ascii=False))
    SyntaxError: Non-ASCII character '\xc3' in file /media/msi-ubuntu/4a613636-5602-4e5a-9856-8e1aef2a7f43/0-dd-germy/lumi_crash_n3.py on line 123, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

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

Discussions similaires

  1. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04
  2. lecture d'un fichier texte
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 22/06/2005, 11h50
  3. [C#] Lecture d'un fichier texte (farfelu)
    Par choas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h33
  4. Lecture d'un fichier Texte
    Par jcharles dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/10/2004, 14h58
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

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