Перейти к главному содержимому

Получение каталогов в python

Получение домашнего каталога
def my_homedir():
  home_env = os.getenv('HOME')
  if home_env is None:
    home_env = os.path.expanduser('~')
  homedir = home_env
  if homedir[-1:] == '/' or homedir[-1:] == "\\":
    homedir = homedir[0:-1]
  return homedir
Получение каталога, где расположен сам скрипт
mydir = os.path.dirname(os.path.realpath(__file__))
Получение каталога c ресурсами

Учитывает как простой запуск, так и запуск exe, созданного при помощи pyinstaller. Аргументом можно дать имя подкаталога внутри каталога с ресурсами.

При обычном запуске возвращает каталог, где расположен сам скрипт.

def resource_path(relative_path = None):
  try:
      base_path = sys._MEIPASS
  except Exception:
      base_path = os.path.abspath(os.path.dirname(__file__))
  if relative_path is None:
    return base_path
  else:
    return os.path.join(base_path, relative_path)
Получение каталога c настройками

Учитывает переменную окружения XDG_CONFIG_HOME.

def system_config_dir():
  p = os.getenv('XDG_CONFIG_HOME', my_homedir() + '/.config')
  return p