Найти папку система в Python

Я пытаюсь выяснить расположение системных папок с Python 3.1. Например "Мои Документы" = "C:Documents и settingsпользовательМои Документы", "программные файлы" = "C:Program файлов" и т. д. и т. п.

4 ответов


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

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

другие доступные папки: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Рабочий Стол, Избранное, Шрифты, MyDocuments, NetHood, Печать, Последние, SendTo, StartMenu, Запуск & Шаблоны


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

>>> import os
>>> os.environ['USERPROFILE']
'C:\Users\digginc'
>>> os.environ['PROGRAMFILES']
'C:\Program Files'

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

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", но, надеюсь, этого будет достаточно, чтобы вы начали.


вызов Windows API для этого, начиная с Vista, является SHGetKnownFolderPath. Есть МИТ-лицензионной обертке (через под, поэтому нет зависимости от pywin32) здесь.

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