12

Как кросс-платформенно получить домашний каталог?

10

Я хочу получить путь к домашнему каталогу текущего пользователя, который вошел в систему. В настоящее время я использую следующий код на Linux:

os.getenv("HOME")

Однако этот подход не работает на Windows. Какой корректный кроссплатформенный способ получить этот путь?

2 ответ(ов)

0

Да, действительно, модуль pathlib также поддерживает получение домашнего каталога пользователя. Вы можете использовать метод Path.home(), чтобы получить путь к домашнему каталогу. Вот пример кода:

from pathlib import Path

home_directory = Path.home()
print(home_directory)  # Например, WindowsPath('C:/Users/XXX')

Этот код вернёт путь к домашнему каталогу в виде объекта Path. Это удобно, так как pathlib предоставляет много полезных методов для работы с файловой системой.

0

Я знаю, что это старая тема, но мне совсем недавно понадобилось решение для крупного проекта (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, и оно тоже работает.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь