Я вижу, что, если мы изменяем ДОМАШНЕЕ (Linux) или ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ (окна) переменная окружения и запускаем скрипт Python, это возвращает новое значение как пользователя домой, когда я попробовал, os.environ ['ДОМАШНИЙ'] os.exp
Там какой-либо путь состоит в том, чтобы найти корневой каталог реального пользователя, не полагаясь на переменную окружения?
править:
Вот способ найти userhome в окнах путем чтения в реестре,
http://mail.python.org/pipermail/python-win32/2008-January/006677.html
править:
Один способ найти окна домой с помощью pywin32,
from win32com.shell import shell,shellcon
home = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, None, 0)
Думаю, os.path.expanduser (path)
может быть полезным.
В Unix и Windows вернуть аргумент с заменой начального компонента
~
или~ user
на домашний каталог этого пользователя.В Unix начальные
~
заменяются переменной окружения HOME, если она установлена; в противном случае домашний каталог текущего пользователя ищется в каталоге паролей с помощью встроенного модуляpwd
. Первоначальный~ пользователь
ищется непосредственно в каталоге паролей .В Windows будут использоваться HOME и USERPROFILE, если они установлены, в противном случае будет использоваться комбинация HOMEPATH и HOMEDRIVE . Первоначальный
~ пользователь
обрабатывается путем удаления последнего компонента каталога из созданного пути пользователя, полученного выше .Если раскрытие не удалось или путь не начинается с тильды, путь возвращается без изменений.
Итак, вы можете просто сделать:
os.path.expanduser('~user')
Действительно, изменение переменной среды указывает на то, что дом должен быть изменен. Таким образом, у каждой программы / сценария должен быть новый дом в контексте; также последствия зависят от человека, который его изменил.
Я бы по-прежнему придерживался
home = os.getenv ('USERPROFILE') или os.getenv ('HOME')
, что именно требуется?
{{ 1}} В Linux и других UNIXoids вы всегда можете заглянуть в / etc / passwd
. Домашний каталог - это шестое поле, разделенное двоеточиями. Не знаю, как сделать лучше, чем переменная окружения в Windows. Для него будет системный вызов, но если он доступен из Python, ...
Я думаю, что os.path.expanduser (path)
- лучший ответ на ваш вопрос, но есть альтернатива, о которой, возможно, стоит упомянуть в мире Unix: pwd
пакет. например
import os, pwd
pwd.getpwuid(os.getuid()).pw_dir
home_folder = os.getenv('HOME')
Это должно работать на Windows и Mac OS тоже, хорошо работает на Linux.