Image

Imagebialix wrote in Imageru_python

Category:

os.path.expanduser на Windows

Возник у меня такой вопрос. Есть в библиотечном модуле os.path такая функция как expanduser, которая вместо "~" подставляет путь к пользовательскому каталогу. Пришла она очевидно из Unix, но вот ее реализация на Windows приводит меня в сомнение.


Запуск на Windows (у меня Win2K SP4) дает следующее:

Python 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os.path
>>> os.path.expanduser("~")
'C:\\'


Если посмотреть установленные переменные окружения, то окажется, что переменной HOME естественно нет, вместо нее есть:

HOMEDRIVE        C:
HOMEPATH         \


и похоже, что из них формируется путь к $HOME.

Но это суть неверно для Windows серии NT: конкретно для 2000, XP и более поздних версий.
В этих ОС для хранения настроек пользователя используются подкаталоги каталога "Documents and settings", типично располагающегося на диске C:.

И в переменных окружения есть такое:

USERPROFILE      C:\Documents and Settings\bialix
USERNAME         bialix
ALLUSERSPROFILE          C:\Documents and Settings\All Users
APPDATA          C:\Documents and Settings\bialix\Application Data


В каталог $APPDATA все хорошо написанные приложения складывают свои настройки в папки с названием программы или продукта. В том числе так поступают и мозилловские программы (Firefox, Thunderbird). В каталоге $USERPROFILE я обнаружил каталог с настройками GIMP: .gimp-2.2/. Но все питоновские программы валят свои настройки именно в C:\\, так в корне диска C были обнаружены каталоги с настройками .idlerc/, .boa-constructor/

Вот в этом суть моего вопроса, в котором я до конца не уверен. Поскольку ни один простой пользователь практически никогда не лазит и не устанавливает переменные окружения руками в Win2k/XP/... , то мне кажется, что Питон некорректно выполняет функцию os.path.expanduser("~"). Или я не прав? А если я прав, то стоит ли это считать багом питона?