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 :

Probl�me python encodage


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par d�faut Probl�me python encodage
    Bonjour, j'ai un probl�me dans mon code je cherce a r�soudre ce bug mais j'y arrive pas.
    Cette erreur survient seulement quand je modifie la liste
    Erreur :
    UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 21: character maps to <undefined>
    Et le code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    import sys
    import fileinput
     
     
    def modifier():
        print("Quelle ligne voulez vous modifier ?")
        linea = input("> ")
        print("Nouveau nom de la tache ?")
        taskname = input("> ")
        print("La tache est elle finie : (y/n) ")
        done = str(input("> "))
        if done == "y":
            done = "☑"
        else:
            done = "☐"
        with open("to_do_list.txt", "r+", encoding='utf-8') as file:  # Crée la liste/l'alimente et l'associe a file
            l = [taskname, "     |      ", done]
            l1 = ''.join(l)
        file.close()
        tempFile = open("to_do_list.txt", 'a+', encoding='utf-8')
        for line in fileinput.input("to_do_list.txt"):
            if linea in line:
                print("d")
            else:
                print("d")
            tempFile.write(line.replace(linea, l1))
        tempFile.close()
        menu()
     
     
    def lire():
        with open("to_do_list.txt", "r+", encoding='utf-8') as file:
            test = file.readlines()
            for i in test:
                print("-", i)
        file.close()
        print("Appuyer sur entrée pour retourner au menu")
        input("")
        menu()
     
     
    def ajouter():
        print("Quelle tache voulez vous ajouter :")
        task = str(input("> "))
        print("La tache est elle finie : (y/n) ")
        done = str(input("> "))
        if done == "y":
            done = "☑"
        else:
            done = "☐"
        with open("to_do_list.txt", "a+", encoding='utf-8') as file:  # Crée la liste/l'alimente et l'associe a file
            l = [task, "     |      ", done, "\n"]
            file.writelines(l)
        file.close()
        menu()
     
     
    def menu():
        print("       Menu :      ")
        print("1. Ouvrir la liste")
        print("2. Ajouter un élément")
        print("3. Modifier un élément")
        print("4. Quitter")
        selectmenu = int(input("> "))
        if selectmenu == 1:
            lire()
        elif selectmenu == 2:
            ajouter()
        elif selectmenu == 3:
            modifier()
        elif selectmenu == 4:
            sys.exit()
        else:
            print("Tu n'as pas sélectionné 1, 2, 3 ou 4.")
            menu()
     
     
    menu()
    Merci pour votre aide

  2. #2
    R�dacteur

    Avatar de danielhagnoul
    Homme Profil pro
    �tudiant perp�tuel
    Inscrit en
    F�vrier 2009
    Messages
    6 389
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant perp�tuel
    Secteur : Enseignement

    Informations forums :
    Inscription : F�vrier 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par d�faut


    Je crois que c'est un probl�me d'encodage, votre fichier n'est pas en 'utf-8'.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues � un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 849
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 12 849
    Billets dans le blog
    1
    Par d�faut
    Bonjour

    En dehors de l'hypoth�se int�ressante de danielhagnoul, est-ce que le script pr�cise son encoding (# coding: utf-8 en seconde ligne sous la ligne shebang qui reste obligatoire) ? Parce que quand je vois
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    if done == "y":
            done = "☑"
        else:
            done = "☐"
    je me dis que ces caract�res �a doit pas �tre trop de l'ascii.

    Citation Envoy� par iSparks Voir le message
    Code python : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
            if linea in line:
                print("d")
            else:
                print("d")


    Sinon quelques remarques g�n�rales: inutile de fermer un fichier ouvert avec un context manager, le context le ferme pour toi (c'est justement le but). Par ailleurs, quand je vois un menu() qui appelle diverses fonctions o� chacune d'elles rappelle le menu() je sens que la charge ne va pas tenir longtemps...
    Mon Tutoriel sur la programmation �Python�
    Mon Tutoriel sur la programmation �Shell�
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les diff�rentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par d�faut
    Merci je vais voir ce que je peux faire

  5. #5
    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
    Salut,

    Que signifie ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
            done = "☑"
        else:
            done = "☐"
    Pourquoi ouvres-tu ce fichier ?
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
        with open("to_do_list.txt", "r+", encoding='utf-8') as file:
            l = [taskname, "     |      ", done]
            l1 = ''.join(l)
        file.close()
    et de plus, il est inutile de fermer un fichier ouvert avec with.

    Ici on ne comprend rien de tes intentions:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        tempFile = open("to_do_list.txt", 'a+', encoding='utf-8')
        for line in fileinput.input("to_do_list.txt"):
            if linea in line:
                print("d")
            else:
                print("d")
            tempFile.write(line.replace(linea, l1))
        tempFile.close()
    tu ouvres un fichier en �criture, tu le r�ouvres en lecture avec fileinput (qui ne sert pas � cela mais � parcourir une liste de fichiers), si le texte linea se trouve dans une ligne tu print un "d" sinon ... tu print un "d" !
    D'autre part linea est un num�ro de ligne du texte mais sous forme de string: linea = input("> ")Ensuite, quoi qu�il en soit, tu ajoutes la ligne au fichier mais comme c'est le m�me fichier tu remplis celui-ci au fur et � mesure que tu le lis !

    Bref un nettoyage de ton code serait utile avant d'aller plus loin.

  6. #6
    Candidat au Club
    Homme Profil pro
    �tudiant
    Inscrit en
    Octobre 2019
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Octobre 2019
    Messages : 3
    Par d�faut
    En fait les d c'�tait juste pour savoir si mon programme pouvais aller jusqu'a l�, mais c'est bon j'ai trouv� la solution merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Lecture fichier RDS sous python: Probl�me d'encodage
    Par Marc A dans le forum Interfa�age autre langage
    R�ponses: 0
    Dernier message: 01/11/2017, 20h01
  2. Python - SQL probl�me d'encodage
    Par cocs78 dans le forum G�n�ral Python
    R�ponses: 6
    Dernier message: 21/02/2017, 11h10
  3. Python + Apache : probl�me d'encodage UTF8 [r�solu]
    Par CetTer dans le forum G�n�ral Python
    R�ponses: 5
    Dernier message: 16/12/2013, 21h53
  4. Probl�me d'encodage avec Python
    Par tse_tilky_moje_imja dans le forum G�n�ral Python
    R�ponses: 2
    Dernier message: 22/02/2006, 14h36
  5. [XML::PARSER] Probl�me d'encodage
    Par frangin2003 dans le forum Modules
    R�ponses: 13
    Dernier message: 05/09/2005, 14h59

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