Как я могу получить (XDG) каталоги пользователей по умолчанию из Python?

Я написал скрипт Python, который просто разбирает файлы .note из файла Tomboy и преобразует их в файлы .enex, которые затем могут быть импортированы в Evernote через настольное приложение:

https: / /gist.github.com/scribu/7442170

1
задан 7 October 2016 в 20:16

1 ответ

Установите библиотеку python для доступа к стандартам freedesktop.org

Чтобы получить каталоги XDG с Python, вам необходимо установить (в зависимости от вашей версии python) один из следующих пакетов:

[d2 ] Для Python 2.x

sudo apt-get install python-xdg

Для Python 3:

sudo apt-get install python3-xdg 

Каталоги XDG

$XDG_DATA_HOME определяют базовый каталог, по отношению к которому пользователь файлы данных должны храниться. Если $XDG_DATA_HOME либо не задан, либо пуст, следует использовать значение по умолчанию, равное $HOME/.local/share. $XDG_CONFIG_HOME определяет базовый каталог, по которому должны храниться файлы конфигурации конкретного пользователя. Если $XDG_CONFIG_HOME либо не задан, либо пуст, следует использовать значение по умолчанию, равное $HOME/.config. $XDG_DATA_DIRS определяет упорядоченный по предпочтению набор базовых каталогов для поиска файлов данных в дополнение к базовому каталогу $XDG_DATA_HOME. Каталоги в $XDG_DATA_DIRS должны быть разделены двоеточием::. Если $XDG_DATA_DIRS не задано или пусто, должно использоваться значение, равное /usr/local/share/:/usr/share/. $XDG_CONFIG_DIRS определяет упорядоченный по предпочтению набор базовых каталогов для поиска файлов конфигурации в дополнение к базовому каталогу $XDG_CONFIG_HOME. Каталоги в $XDG_CONFIG_DIRS должны быть разделены двоеточием::. Если $XDG_CONFIG_DIRS не задано или пусто, должно использоваться значение, равное /etc/xdg.

Источник: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

ОБНОВЛЕНИЕ: Как получить доступ к пользовательским каталогам XDG Ubuntu:

Файл ~/.config/user-dirs.dirs всегда будет содержать имена локализации, поскольку инструмент http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html управляет этим файлом , см. раздел посвященной справочной страницы:

   The XDG user dirs configuration is stored in the user-dirs.dir
   file in the location pointed to by the XDG_CONFIG_HOME
   environment variable.

Следующий код python позволит вам проанализировать ~/.config/user-dirs.dirs.

#!/usr/bin/env python

import io
import os
import re
import ConfigParser

from xdg.BaseDirectory import xdg_config_home

config = ConfigParser.RawConfigParser(allow_no_value=True)

f = open(os.path.join(xdg_config_home, "user-dirs.dirs"))
user_config = "[XDG_USER_DIR]\n" + f.read()
f.close()
user_config = re.sub('\$HOME', os.path.expanduser("~"), user_config)
user_config = re.sub('"', '', user_config)

config.readfp(io.BytesIO(user_config))
print config.get("XDG_USER_DIR", "XDG_PICTURES_DIR")
4
ответ дан 24 May 2018 в 08:29
  • 1
    Спасибо @Sylvain, но, похоже, он не работает: O paste.ubuntu.com/7352802 Мне нужно $ HOME / Documents, $ HOME / Pictures и т. Д. – costales 28 April 2014 в 19:38
  • 2
    Я обновил свой ответ, чтобы проанализировать эти значения – Sylvain Pineau 28 April 2014 в 21:44
  • 3
    Спасибо @Sylvain Pineau! Тогда нет решения без разбора файла? – costales 28 April 2014 в 22:36
  • 4
    Не существует выделенного модуля python, кроме тех, которые предоставляют исходные значения freedesktop, поэтому я предполагаю, что разбор этого файла является единственным решением. – Sylvain Pineau 28 April 2014 в 22:38
  • 5
    В Python 3 ConfigParser был переименован в configparser для соответствия PEP 8. – user278849 9 March 2017 в 05:35

Другие вопросы по тегам:

Похожие вопросы: