Будет ли os.path.expanduser ('~ /') не возвращать каталог?

Из Как получить домашний каталог в Python? и Как найти настоящий домашний каталог пользователя с помощью python?, домашний каталог пользователя можно найти с помощью:

import os
os.path.expanduser('~/')

Но есть ли вероятность, что os.path.expanduser() ничего не найдет и вернет ~/?

Я задаю этот вопрос, потому что из nltk эта строка находится по адресу https://github.com/nltk/nltk/blob/develop/nltk/downloader.py#L951

homedir = os.path.expanduser('~/')
if homedir == '~/':
    raise ValueError("Could not find a default download directory")

Примечание. Вопрос не в том, как найти домашний каталог пользователя, а в том, есть ли смысл проверять значение os.path.expanduser и выдавать ошибку.


person alvas    schedule 09.05.2017    source источник
comment
Возможный дубликат Как найти настоящий домашний каталог пользователя с помощью питон?   -  person Zain I.    schedule 09.05.2017
comment
Да, и ValueError - это хорошо для raise, поскольку код не должен продолжаться на этом этапе до тех пор, пока не будет использоваться другая стратегия для поиска правильного каталога.   -  person JacobIRR    schedule 09.05.2017


Ответы (1)


В официальном документе.

В Unix начальный ~ заменяется переменной окружения HOME, если она установлена; в противном случае домашний каталог текущего пользователя ищется в каталоге паролей с помощью встроенного модуля pwd. Первого пользователя ищут прямо в каталоге паролей.

...

Если раскрытие не удается или путь не начинается с тильды, путь возвращается без изменений.

Итак, как говорится в документе, если операция завершится неудачно, она вернет исходную строку. И дело в том, чтобы вернуть неизменный путь, но не постоянно ~/.

person Sraw    schedule 09.05.2017