Как кросс-платформенно получить домашний каталог?
Я хочу получить путь к домашнему каталогу текущего пользователя, который вошел в систему. В настоящее время я использую следующий код на Linux:
os.getenv("HOME")
Однако этот подход не работает на Windows. Какой корректный кроссплатформенный способ получить этот путь?
2 ответ(ов)
Да, действительно, модуль pathlib
также поддерживает получение домашнего каталога пользователя. Вы можете использовать метод Path.home()
, чтобы получить путь к домашнему каталогу. Вот пример кода:
from pathlib import Path
home_directory = Path.home()
print(home_directory) # Например, WindowsPath('C:/Users/XXX')
Этот код вернёт путь к домашнему каталогу в виде объекта Path
. Это удобно, так как pathlib
предоставляет много полезных методов для работы с файловой системой.
Я знаю, что это старая тема, но мне совсем недавно понадобилось решение для крупного проекта (Python 3.8), которое должно было работать на всех основных операционных системах. Поэтому я воспользовался решением, которое предложил @Max в комментариях.
Вот код:
import os
print(os.path.expanduser("~"))
Вывод в Windows:
PS C:\Python> & C:/Python38/python.exe c:/Python/test.py
C:\Users\mXXXXX
Вывод в Linux (Ubuntu):
rxxx@xx:/mnt/c/Python$ python3 test.py
/home/rxxx
Я также протестировал это на Python 2.7.17, и оно тоже работает.
Почему используется string.join(list), а не list.join(string)?
Создание словаря с помощью генератора словарей
Как получить полный путь к директории текущего файла?
UnicodeDecodeError: Кодек 'charmap' не может декодировать байт X в позиции Y: символ отображается как <неопределённый>
Найти все файлы с расширением .txt в директории на Python