Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chemin Python avec accents

Sujet résolu
    20 mars 2017 à 16:44:44

    Bonjour,

    J'essaie d'ouvrir un fichier Excel mais le chemin contient des accents et il m'est impossible d'ouvrir le fichier. J'ai essayé plein d'encoding différents mais rien ne fonctionne.

    # coding: utf8
    from xlrd import open_workbook
    from ExcelDataReader import numDossier
    
    pathFile = 'S:\Classe Financière\03 - Contrôle Gestion\extraction CA.xlsm'
    
    bookCA = open_workbook(pathFile)
    

    Est-ce que quelqu'un a une idée ?

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 mars 2017 à 18:30:30

      Enlever les accents ?
      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2017 à 17:58:10

        Sinon j'ai trouvé sur un forum ça et ça fonctionne pour moi:

        the_path = r"S:\Classe Financière\03 - Contrôle de Gestion\CAMensuel.xlsx".decode('utf-8').encode('cp1252')
        



        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 avril 2017 à 19:19:36

          Oui c'est possible, cependant tu devrais t'habituer à écrire tes chemins sans accent.
          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2017 à 9:57:14

            C'est ce que je fais, mais quand tu travailles en entreprise, tu n'as pas toujours le choix
            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2017 à 10:01:59

              Il y a pourtant des solutions. Mais il faudrait savoir quelle version de Python tu utilises (2 ou 3).

              Utiliser quelque chose sans le comprendre, c'est la porte ouverte à de gros ennuis plus tard. ;)

              • Partager sur Facebook
              • Partager sur Twitter
                14 janvier 2022 à 15:24:55

                Bonjour,

                Je suis sous Windows 10, j'utilise Python 3 dans Jupyter Notebook et je rencontre le même problème sans doute lié aux accents dans le chemin.

                J'ai testé la solution présentée ci-dessus mais cela ne fonctionne pas, voici le script et message :

                import os

                the_path = r"S:\Classe Financière\03 - Contrôle de Gestion\CAMensuel.xlsx".decode('utf-8').encode('cp1252')

                print(the_path)

                AttributeError                            Traceback (most recent call last)
                C:\Users\BA-PAT~1\AppData\Local\Temp/ipykernel_10940/1981419812.py in <module>
                 1 import os
                 2 
                ----> 3the_path = r"S:\Classe Financière\03 - Contrôle de Gestion\CAMensuel.xlsx".decode('utf-8').encode('cp1252')
                 4 
                 5 
                
                AttributeError: 'str' object has no attribute 'decode'

                -
                Edité par BéatriceWeistroffer 14 janvier 2022 à 15:25:53

                • Partager sur Facebook
                • Partager sur Twitter
                Béa
                  14 janvier 2022 à 15:43:47

                  à priori, avec Python3:
                  the_path = r"S:\Classe Financière\03 - Contrôle de Gestion\CAMensuel.xlsx"
                  devrait suffire.

                  -
                  Edité par mps 14 janvier 2022 à 17:02:57

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 janvier 2022 à 16:55:59

                    ton erreur indique que str n'a pas de fonction/attributs decode, si tu fais l'inverse (encode avant decode) ça va fonctionner (tu n'aura du moins pas cette erreur)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 janvier 2022 à 20:15:36

                      Notez que les accents et l'encodage n'ont rien avoir avec le problème. C'est juste le caractère d'échappement (barre oblique inversée) qu'il faut soit échapper (doubler), soit remplacer par le séparateur UNIX (barre oblique), soit utiliser une chaîne brute.
                      path = "C:\\ça\\c'est\\valide"        # caractère \ échappé
                      path = "C:/ça/aussi/c'est/valide"     # caractère / à la place de \
                      path = r"C:\et\ça\c'est\encore\mieux" # chaîne brute
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Chemin Python avec accents

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown