J'essaie de trouver l'emplacement des dossiers système avec Python 3.1. Par exemple "Mes Documents" = "C: \ Documents and Settings \ Utilisateur \ Mes Documents", "Program Files" = "C: \ Program Files" etcTrouver les emplacements des dossiers système en Python
Répondre
J'ai trouvé a slightly different way of doing it. De cette façon, vous obtiendrez l'emplacement de divers dossiers système et utiliserez des mots réels au lieu de CLSID.
import win32com.client
objShell = win32com.client.Dispatch("WScript.Shell")
allUserDocs = objShell.SpecialFolders("AllUsersDesktop")
print allUserDocs
Autres dossiers disponibles: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, DemarrageTousUtil, Bureau, Favoris, Fonts, MYDOCUMENTS, Nethood, PrintHood, récents, SendTo, StartMenu, démarrage & Modèles
Pour obtenir le dossier "Mes Documents", vous peut utiliser:
from win32com.shell import shell
df = shell.SHGetDesktopFolder()
pidl = df.ParseDisplayName(0, None,
"::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1]
mydocs = shell.SHGetPathFromIDList(pidl)
print mydocs
De here. Je ne suis pas sûr de ce que l'incantation magique équivalente est pour "Program Files", mais cela devrait, espérons-le, être suffisant pour vous aider à démarrer.
En Python <3, oui. En Python 3.1: >>> de coquille d'importation win32com.shell retraçage (le plus récent appel dernier): Fichier "
win32com est-il installé? Il existe des versions disponibles pour Python 3.1 (voir http://sourceforge.net/projects/pywin32/files/) –
[Edit] qui fonctionne très bien, merci! –
Dans Windows 7 je peux utiliser les variables d'environnement suivantes pour accéder aux dossiers dont j'ai besoin:
>>> import os
>>> os.environ['USERPROFILE']
'C:\\Users\\digginc'
>>> os.environ['PROGRAMFILES']
'C:\\Program Files'
Je suis sur 7 en ce moment et cela fonctionne bien. Savez-vous comment cela est fiable pour une utilisation multi-plateforme? La documentation n'est pas beaucoup d'aide. Merci. –
Je ne sais pas malheureusement M. Chimp, désolé. – cdiggins
L'appel API Windows pour ce faire, de Vista, est SHGetKnownFolderPath. Il y a un wrapper sous licence MIT (en utilisant ctypes, donc pas de dépendances sur pywin32) here.
>>> from knownpaths import *
>>> get_path(FOLDERID.ProgramFilesX86)
u'C:\\Program Files (x86)'
Cette bibliothèque est-elle documentée quelque part? Le site SourceForge est juste un labyrinthe de bannières publicitaires et de wikis vides. Je cherche le répertoire Program Files (ou, du moins, c'est ce que l'on appelait sous Windows ... heureusement, je n'ai pas eu à faire face à Windows depuis très longtemps). 'AllUsersPrograms' semble retourner le chemin vers 'Programmes' sous le menu Démarrer (ce qui est intéressant, car je ne suis pas sûr d'avoir trouvé le menu Démarrer dans Windows Server 2012!) –
@MIchael Scheper J'ai peur Je ne l'ai pas touché depuis que j'ai posé cette question et SourceForge est descendu sévèrement depuis. Peut-être essayer d'inspecter 'objShell' et voir s'il y a une méthode pour voir tous les noms' SpecialFolder'? –
Merci. Ce que j'ai trouvé jusqu'à présent est http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/pywin32/com.html et, plus généralement, http://aspn.activestate.com/ASPN/docs/ ActivePython/2.4/pywin32/win32_modules.html, et un commentaire qui lit 'Pywin32 est lié si étroitement aux appels win32 que vous pouvez essentiellement simplement regarder sur MSDN et utiliser la syntaxe là en Python, pour la plupart. Je ne l'ai pas encore vérifié, mais peut-être que cela aidera à mettre les autres SO sur la bonne voie. –