Вывод типа базы данных конфигурации GNOME

Мой рабочий стол - GNOME, и я программно изменяю его настройки через Python.

База данных имеет простые типы значений, например, строки, целые, списки строк, список целых,...

Простым инструментом CLI для манипулирования данными является gconftool-2, который возвращает значения для ключей, используя --get вариант.

Я не знаю, чтобы вывести тип из этих значений, учитывая, что мне нужно знать значение при его задании. Обратите внимание, что в моей схеме "8" является строкой, а 8 - целым числом, но оба они выводят как просто 8 с помощью gconftool-2.

Как бы вы поступили так?

1 ответ

Решение

Вместо того, чтобы вызывать инструмент командной строки, попробуйте использовать gconf модуль, включенный в привязки GNOME Python:

>>> import gconf
>>> client = gconf.Client()
>>> # Get a value and introspect its type:
>>> value = client.get('/apps/gnome-terminal/profiles/Default/background_color')
>>> value.type
<enum GCONF_VALUE_STRING of type GConfValueType>
>>> value.get_string()
'#FFFFFFFFDDDD'

Для списков вы можете проанализировать тип значения списка:

>>> value = client.get('/apps/compiz-1/general/screen0/options/active_plugins')
>>> value.type
<enum GCONF_VALUE_LIST of type GConfValueType>
>>> value.get_list_type()
<enum GCONF_VALUE_STRING of type GConfValueType>
>>> value.get_list()
(<GConfValue at 0x159aa80>, <GConfValue at 0x159aaa0>, ...)

Тем не менее, в общем, вы должны знать типы ключей, которыми вы манипулируете, и использовать соответствующие методы доступа, соответствующие конкретному типу (например, Client.get_string а также Client.set_string).

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