Chercher son chemin

Chercher son chemin - Python - Programmation

Marsh Posté le 10-04-2017 à 10:27:00    

Bonjour,
 
Merci de votre attention. :)  
 
Voilà, je travaille depuis quelques semaines sur un plugin programmé en python (je n'en ai jamais fait avant). En sois il fonctionne mais je n'arrive pas à enregistrer les fichiers générés pour l'utilisateur au bon endroit. C'est à dire sur son bureau.
 
Malheureusement sur mon PC il se trouve que mon bureau est sur le D: et non sur le C: , je souhaiterais savoir si il y a une méthode afin de connaitre le chemin exact du bureau de l'utilisateur (que son bureau soit sur n'importe quel disk)
 
J'ai testé :

Code :
  1. self.path = os.path.expanduser("~\\Links\\Desktop\\Styles\\" )
  2. self.path = os.path.expanduser('~')+"\\Desktop\\Styles\\"
  3. self.path = os.path.expanduser("~\\Desktop\\Styles\\" )
  4. self.path = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\Styles\\')


 
Rien n'a fonctionné car il cherche le Desktop sur le C:, j'ai bien sûr cherché sur google et n'ai trouvé que des solutions pour connaitre le chemin vers le C:...
 
Auriez vous une solution ? (bien sur il ne faut pas que le chemin soit en brute puisqu'il doit s'adapter selon le client)
 
Merci !

Reply

Marsh Posté le 10-04-2017 à 10:27:00   

Reply

Marsh Posté le 10-04-2017 à 14:34:53    

Pour trouver proprement le répertoire du bureau, la méthode "générique" c'est de faire appel à SpecialFolders "Desktop" sur un objet lié au shell dont le nom dépend du langage.

 

Par exemple en VBS :
WScript.CreateObject("WScript.Shell" ).SpecialFolders("Desktop" )
En .Net :
Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Ou
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
Selon que tu veuilles un chemin logique (shell) ou physique (sachant que ça a été unifié depuis).

 

Partant de ce principe général, en faisant la même recherche avec "Python" en plus, je dirai de suivre ceci :
http://stackoverflow.com/questions [...] ed-in-user


Message édité par TotalRecall le 10-04-2017 à 14:36:08

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 10-04-2017 à 14:56:41    

Yes !!! trop bien ça fonctionne !!! (j'ai prit le module winshell) .
 
Merci beaucoup !!!!!!!!!

Reply

Marsh Posté le 14-04-2017 à 19:00:32    

On peut aussi utiliser ctypes directement dans les modules standards
 

Code :
  1. import ctypes
  2. def get_desktop():
  3.     SHGetSpecialFolderPath = ctypes.windll.shell32.SHGetSpecialFolderPathW
  4.     buffer = ctypes.create_unicode_buffer(1024)
  5.     res = SHGetSpecialFolderPath(None, buffer, 0x0000, False)
  6.     if res:
  7.         return buffer.value
  8.     return None


Message édité par fred1599 le 14-04-2017 à 19:01:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed