Найти расположение системных папок в Python - PullRequest
9 голосов
/ 14 января 2010

Я пытаюсь выяснить расположение системных папок с Python 3.1. Например, «Мои документы» = «C: \ Documents and Settings \ Пользователь \ Мои документы», «Программные файлы» = «C: \ Программные файлы» и т. Д. И т. Д.

Ответы [ 4 ]

8 голосов
/ 14 января 2010

Я нашел немного другой способ сделать это . Этот способ даст вам местоположение различных системных папок и использует реальные слова вместо CLSID.

import win32com.client
objShell = win32com.client.Dispatch("WScript.Shell")
allUserDocs = objShell.SpecialFolders("AllUsersDesktop")
print allUserDocs

Другие доступные папки: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, рабочий стол, избранное, шрифты, MyDocuments, NetHood, PrintHood, последние, SendTo, StartMenu, запуск и шаблоны

5 голосов
/ 24 ноября 2011

В Windows 7 я могу использовать следующие переменные среды для доступа к нужным папкам:

>>> import os
>>> os.environ['USERPROFILE']
'C:\\Users\\digginc'
>>> os.environ['PROGRAMFILES']
'C:\\Program Files'
4 голосов
/ 14 января 2010

Чтобы получить папку «Мои документы», вы можете использовать:

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

С здесь .

Я не уверен, что такое магическое заклинание для "Program Files", но, надеюсь, этого будет достаточно, чтобы вы начали.

0 голосов
/ 30 мая 2015

Для этого в Windows API для этого требуется SHGetKnownFolderPath .Существует оболочка с лицензией MIT (используется ctypes, поэтому нет зависимости от pywin32) здесь .

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