11
votes

Rechercher des emplacements de dossiers système à Python

J'essaie de trouver l'emplacement des dossiers système avec Python 3.1. Par exemple, mes documents "=" C: \ Documents et paramètres \ User \ Mes documents "," Fichiers de programme "=" C: \ Program Files ", etc.


0 commentaires

5 Réponses :


4
votes

Pour obtenir le dossier "My Documents", vous pouvez utiliser: xxx

de ici .

Je ne sais pas quelle est l'incantation de magie équivalente pour "Fichiers de programme", mais cela devrait être suffisant pour que vous puissiez commencer.


2 commentaires

Dans Python <3, oui. Dans Python 3.1: >>> de Win32Com.Shell Importer Shell Traceback (dernier appel): Fichier "", ligne 1, dans de win32com.shell Import Shell Importerror: Aucun module nommé Win32Com. coquille


Win32Com est-il installé? Il existe des versions disponibles pour Python 3.1 (voir sourceforge.net/projects/pywin32/files )



9
votes

4 commentaires

Cette bibliothèque est-elle documentée n'importe où? Le site Sourceforge est juste un labyrinthe de bannières annonces et des wikis vides. Je cherche le répertoire des fichiers de programme (ou, au moins, c'est ce qu'il servait à être appelé sous Windows ... Heureusement, je n'ai pas eu à traiter de Windows depuis très longtemps). "AlluSersPrograms" semble renvoyer la voie à "programmes" dans le menu Démarrer (qui est intéressant, car je ne suis pas sûr que j'ai même trouvé le menu Démarrer dans Windows Server 2012!)


@Michael Scheper J'ai bien peur de ne pas l'avoir touchée depuis que j'ai posé cette question et que Sourceforge est devenu sévèrement descendant depuis. Peut-être essayez peut-être d'inspecter objshell et de voir s'il existe une méthode pour afficher tous les noms Specialfolder ?


Merci. Ce que j'ai trouvé jusqu'à présent, c'est aspn.activestate.com/ ASPN / DOCS / ACTIVEPYTHON / 2.4 / PYWIN32 / ... et, plus généralement, aspn.activestate.com/aspn/docs/activepytthon/2.4/pywin32/... , et un commentaire qui se lit 'pywin32 est relié de manière aussi étroite aux appels Win32 que vous pouvez fondamentalement regarder MSDN et utilisez la syntaxe dans Python, pour la plupart. Je n'ai pas encore vérifié cela cela, mais peut-être que cela aidera à mettre d'autres sales sur la bonne voie.


@MichaelsCHeper La référence la plus accessible / compréhensible que j'ai trouvée est SS64 - SS64.com/vb/special.html , qui font à son tour leurs sources pour les détails complets



7
votes

Dans Windows 7, je peux utiliser les variables d'environnement suivantes pour accéder aux dossiers dont j'ai besoin: xxx


2 commentaires

Je suis sur 7 pour le moment et cela fonctionne bien. Savez-vous à quel point cela est fiable pour une utilisation inter-plate-forme? La documentation n'est pas beaucoup d'aide. Merci.


Je ne sais pas malheureusement M. Chimp, désolé.



1
votes

L'appel de l'API Windows pour le faire, de Vista on, est shgekknowfolderpath . Il y a une enveloppe sous licence de mit (utilisant CTTPES, donc pas de dépendances sur pywin32) ici .

>>> from knownpaths import *
>>> get_path(FOLDERID.ProgramFilesX86)
u'C:\\Program Files (x86)'


1 commentaires

hah! Si j'avais fait attention à ce message non voté, il y a quelques heures, je n'aurais pas écrit le mien. +5 si je pouvais.



0
votes

Voici une approche alternative Win32Com car wscript.shell "Les dossiers spéciaux ne fonctionnent pas dans toutes les localités de langue, une méthode préférée consiste à interroger la valeur des dossiers d'enregistrement utilisateur" ( ref ): xxx

Le numéro d'identification vient de Msdn ShellSpecialfolderStarStativesStatives . J'ai converti cette liste sur CSV pour une utilisation facile et écrit un court script Python Demoting qui, GIST ici .

Spécial grâce à M. Chimp pour commencer cela. J'ai fortement compté sur sa réponse et des références pour commencer.


0 commentaires