Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème chemin d'accès Python

22 juin 2017 à 14:52:23

Bonjour,

je travaille depuis quelques temps, pour mon stage, sur un code Python. C'est un code qui permet de manipuler un fichier Excel. 

Maintenant qu'il fonctionne sur mon PC, j'ai voulu le faire fonctionner sur le PC du bureau, et j'ai un petit souci. Je n'arrive pas à faire fonctionner le chemin d'accès... J'en ai essayé plusieurs et ça ne fonctionne pas. Là, j'ai fait un test au plus simple, en mettant le fichier sur le bureau. Ce qui donne comme chemin d'accès : C:\Users\supervision2\Desktop\communication_python.xlsx

J'ai comme message d'erreur : "No such file or directory : 'C:\\Users\\supervision2\\Desktop\\communication_python.xslx"

Quel que soit l'endroit où je le mets, j'ai ce problème... et je remarque qu'automatiquement, il double les backslashs. Est-ce que c'est ça qui le fait planter?

Sachant que quand j'utilise la commande os.listdir(), le fichier est trouvé.

J'ai lu plusieurs astuces sur internet, indiquant qu'un problème peut être le code "\U" qui fait référence à de l'unicode, et que ce problème peut être résolu en doublant les "\", ou en ajoutant un "r" devant (pour raw string). Rien à faire, ça ne fonctionne pas.

Quelqu'un aurait-il une idée?

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 juin 2017 à 15:18:04

Le plus simple et certainement plus propre serait

import os

desktop = os.path.join(os.environ['HOME'], 'Desktop')

Les doubles '\\' c'est normal oui !

Tu feras un print(desktop) et tu les retrouveras sans doute.

Si ça ne fonctionne pas, indique le message d'erreur et le code utilisé, l'erreur est peut-être ailleurs...

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 15:26:53

Lorsque je copie ce programme mot pour mot, j'ai le message suivant : "KeyError: 'HOME'", et au-dessus "raise KeyError(key) from None"

De plus, je ne vois pas où intervient mon fichier dans ce cas? :)

Merci en tout cas!

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 juin 2017 à 15:39:30

Ok, sur Windows 7 ça fonctionnait ça... Plus qu'à voir dans quelle variable a été mis ton chemin du Users...

Que donne comme résultat

import os

print(os.environ)

?

PatxiHacala a écrit:

De plus, je ne vois pas où intervient mon fichier dans ce cas?

Donc tu n'as rien compris de ce que j'ai fais, parce-que sinon, t'avais juste à faire un os.path.join entre desktop et ton fichier et tu avais le chemin de ton fichier.

-
Edité par Anonyme 22 juin 2017 à 15:41:53

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 16:02:09

Effectivement, je n'avais pas vraiment compris.

J'ai effectué un "print(os.getcwd())" et le chemin d'accès était exactement, à la lettre près, celui que j'avais mis au départ.

En faisant "print(os.environ), voici ce que ça me sort (attention, pavé) : 

environ({'AGSDESKTOPJAVA': 'C:\\Program Files (x86)\\ArcGIS\\Desktop10.3\\', 'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\supervision2\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'AGUR64-ASN', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'DELLCLIENTSYSTEMUPDATEPATH': 'C:\\Program Files (x86)\\Dell\\ClientSystemUpdate\\', 'FP_NO_HOST_CHECK': 'NO', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\supervision2', 'LOCALAPPDATA': 'C:\\Users\\supervision2\\AppData\\Local', 'LOGONSERVER': '\\\\SRV-AGUR', 'MOZ_PLUGIN_PATH': 'C:\\Program Files\\Tracker Software\\PDF Viewer\\Win32\\', 'NUMBER_OF_PROCESSORS': '4', 'OS': 'Windows_NT', 'PATH': 'C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Library\\bin;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Library\\bin;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Library\\mingw-w64\\bin;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Library\\usr\\bin;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Library\\bin;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Scripts;C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\Library\\bin;C:\\Program Files\\Common Files\\Microsoft Shared\\Windows Live;C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\Windows Live;C:\\Program Files (x86)\\Intel\\iCLS Client\\;C:\\Program Files\\Intel\\iCLS Client\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files\\Dell\\Dell Data Protection\\Access\\Advanced\\Wave\\Gemalto\\Access Client\\v5\\;C:\\Program Files (x86)\\Security Innovation\\SI TSS\\bin\\;C:\\Program Files (x86)\\Windows Live\\Shared;c:\\Program Files (x86)\\Microsoft SQL Server\\100\\Tools\\Binn\\;c:\\Program Files\\Microsoft SQL Server\\100\\Tools\\Binn\\;c:\\Program Files\\Microsoft SQL Server\\100\\DTS\\Binn\\;C:\\Program Files (x86)\\Skype\\Phone\\', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PORTEAU': 'C:\\Program Files (x86)\\Irstea\\Porteau3', 'PROCESSOR_ARCHITECTURE': 'x86', 'PROCESSOR_ARCHITEW6432': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 58 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '3a09', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files (x86)', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PSMODULEPATH': 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 'PUBLIC': 'C:\\Users\\Public', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\SUPERV~1\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\SUPERV~1\\AppData\\Local\\Temp', 'USERDNSDOMAIN': 'AGUR64.SAGET.FR', 'USERDOMAIN': 'AGUR64', 'USERNAME': 'Supervision2', 'USERPROFILE': 'C:\\Users\\supervision2', 'WINDIR': 'C:\\Windows', 'WINDOWS_TRACING_FLAGS': '3', 'WINDOWS_TRACING_LOGFILE': 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log', 'CONDA_PREFIX': 'C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3', 'LANG': 'fr', 'SPYDER_ARGS': '[]', 'QT_API': 'pyqt5', 'IPYTHON_KERNEL': 'True', 'EXTERNAL_INTERPRETER': 'False', 'UMR_ENABLED': 'True', 'UMR_VERBOSE': 'True', 'UMR_NAMELIST': '', 'JPY_INTERRUPT_EVENT': '2552', 'IPY_INTERRUPT_EVENT': '2552', 'JPY_PARENT_PID': '2672', 'SPYDER_PARENT_DIR': 'C:\\Users\\supervision2\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages', 'TERM': 'xterm-color', 'CLICOLOR': '1', 'PAGER': 'cat', 'GIT_PAGER': 'cat', 'MPLBACKEND': 'module://ipykernel.pylab.backend_inline'})

Pour info, quand je travaillais sur mon PC, l'instruction était la suivante : 

path = os.path.join("D:\\", "Documents","p.hacala","Documents","travail","AGUR","communication_python.xlsx")
classeur = openpyxl.load_workbook(path)
xlApp = Dispatch("Excel.Application")
xlApp.Visible=True

J'ai tapé exactement la même chose sur le PC du bureau mais avec le chemin spécifique, et il ne veut rien savoir.

C'est à devenir fou...


  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 juin 2017 à 16:11:31

Il semble que la variable soit nommée HOMEPATH, à remplacer par la précédente variable HOME que j'avais donné.

Donc

import os
 
desktop = os.path.join(os.environ['HOMEPATH'], 'Desktop')
xls = os.path.join(desktop, 'communication_python.xlsx')

# traitement avec le fichier à partir de la variable xls



-
Edité par Anonyme 22 juin 2017 à 16:14:41

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 16:21:09

Quand je tape :

desktop=os.path.join(os.environ['HOMEPATH'], 'Desktop')
print(desktop)

il me retourne bien le chemin d'accès \Users\supervision2\Desktop

Mais quand je l'intègre à mon code et que je fais alors : 

path=os.path.join(desktop, 'communication_python.xlsx')

le même problème revient : no such file or directory...


  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 juin 2017 à 16:24:37

et si tu fais

print(os.path.isfile(path))

il te renvoi bien True ?

  • Partager sur Facebook
  • Partager sur Twitter
22 juin 2017 à 16:28:57

Non, il me renvoie False...

J'ai voulu faire un os.listdir() mais il me dit que le chemin d'accès est introuvable.

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
22 juin 2017 à 16:38:26

Pour os.listdir, c'est normal, il prend un répertoire en paramètre, pas un fichier.

S'il te renvoie False, il y a un soucis, vérifie que tu peux l'ouvrir avec excel et vérifie en le renommant, de le copier et le coller dans ton code...

Il y a sans doute une erreur d'étourderie dans le nom ou l'extension de ton fichier.

-
Edité par Anonyme 22 juin 2017 à 16:39:07

  • Partager sur Facebook
  • Partager sur Twitter
23 juin 2017 à 8:22:56

J'arrive à l'ouvrir depuis son emplacement, sans problème. En revanche, il est en mode protégé quand je l'ouvre, le problème vient peut-être de là?

EDIT : non, ça ne change rien. J'ai recréé un fichier non protégé, ça ne fonctionne pas mieux.

Il y a quand même quelque chose de bizarre : j'ai tapé les lignes suivantes : 

import os
desktop=os.path.join(os.environ['HOMEPATH'], 'Desktop')
print(desktop)

Et j'ai en retour la réponse suivante : 

\Users\supervision2\Desktop

Et si après j'ajoute : 

print(os.listdir(desktop))

J'ai pour réponse : 

Le chemin d'accès spécifié est introuvable : '\\Users\\supervision2\\Desktop'

C'est con mais j'ai l'impression que ce sont les doubles '\' qui posent problème!




-
Edité par PatxiHacala 23 juin 2017 à 8:51:51

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
23 juin 2017 à 13:06:25

Est-ce que c'est 'Desktop' ? Peut-être est-ce 'Bureau' ?
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2019 à 10:44:24

bonjour svp aide je n'arrive pas à trouver le chemin pour ouvrir mon fichier txt

j'ai plein d'erreur

  • Partager sur Facebook
  • Partager sur Twitter
21 novembre 2019 à 11:43:16

MoustaphaMoumouni a écrit:

bonjour svp aide je n'arrive pas à trouver le chemin pour ouvrir mon fichier txt

j'ai plein d'erreur

Salut, il faudrait créer un nouveau sujet en donnant plus de détails à propos de ce que tu n'arrives pas à faire.

  • Partager sur Facebook
  • Partager sur Twitter

Dans le doute, reboot.

21 novembre 2019 à 12:22:08

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)