Если вы не хотите добавлять зависимость для стороннего модуля, такого как winpaths, я бы порекомендовал использовать переменные среды, уже имеющиеся в Windows:
В частности, вы, вероятно, хотите, чтобы ALLUSERSPROFILE
получил местоположение общей папки профиля пользователя, в которой находится каталог Application Data.
например:
C:\> python -c "import os; print os.environ['ALLUSERSPROFILE']"
C:\Documents and Settings\All Users
РЕДАКТИРОВАТЬ : Глядя на модуль winpaths, он использует ctypes, поэтому, если вы хотите просто использовать соответствующую часть кода без установки winpath, вы можете использовать это (очевидно, для краткости проверка некоторых ошибок не включена) .
import ctypes
from ctypes import wintypes, windll
CSIDL_COMMON_APPDATA = 35
_SHGetFolderPath = windll.shell32.SHGetFolderPathW
_SHGetFolderPath.argtypes = [wintypes.HWND,
ctypes.c_int,
wintypes.HANDLE,
wintypes.DWORD, wintypes.LPCWSTR]
path_buf = wintypes.create_unicode_buffer(wintypes.MAX_PATH)
result = _SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, 0, path_buf)
print path_buf.value
Пример выполнения:
C:\> python get_common_appdata.py
C:\Documents and Settings\All Users\Application Data