Хранение настроек приложения и данных

Я смотрю на создание некоторых приложений Ubuntu, но найти хорошие ресурсы сложно.

Я пользуюсь быстрым инструментарием, но мне бы хотелось немного больше узнать. Как обычно хранить настройки и настройки приложения в Linux / Ubuntu.

Это так же просто, как создать файл XML и сохранить информацию, а затем прочитать из указанного файла при загрузке приложения?

Если кто-то может указать мне направление, это было бы очень признательно.

РЕДАКТИРОВАТЬ

Это то, что я написал, ожидая ответа. Вероятно, именно то, что делает предпочтения, но просто закодировано Вы можете найти это полезным:

import ConfigParser, os # We need to be able to store and recal settings

#first try to read the config.cfg file
config = ConfigParser.RawConfigParser()
configFile = 'data/config.cfg'

# We need to set some defaults
monState = False
tueState = False
wedState = False
thurState = False
friState = False
satState = False
sunState = False

# Creating the Config file
def createConfigFile(fileName):
    print "CREATING CONFIG" # not needed, but nice for debugging
    config.add_section('Preferences')
    config.set('Preferences', 'mon', False)
    config.set('Preferences', 'tues', False)
    config.set('Preferences', 'wed', False)
    config.set('Preferences', 'thur', False)
    config.set('Preferences', 'fri', False)
    config.set('Preferences', 'sat', False)
    config.set('Preferences', 'sun', False)
    rewriteConfigFile(filename)

# After reading the config file, we can update configs in memory. 
# But this will save it to file for when the application is started up again. 
def rewriteConfigFile(filename):    
    with open(filename, 'wb') as configfile:
        config.write(configfile)

# Reading the config file 
def readConfigFile(fileName):
    print "READING CONFIG"  # not needed, but nice for debugging
    global monState, tueState, wedState, thurState, friState, satState, sunState
    monState = config.getboolean('Preferences', 'mon')
    tueState = config.getboolean('Preferences', 'tues')
    wedState = config.getboolean('Preferences', 'wed')
    thurState = config.getboolean('Preferences', 'thur')
    friState = config.getboolean('Preferences', 'fri')
    satState = config.getboolean('Preferences', 'sat')
    sunState = config.getboolean('Preferences', 'sun')

# If the config does not exist, create it, then read it. Otherwise simply read it
if not config.read(configFile):    
    createConfigFile(configFile)
    readConfigFile(configFile)    
else:
    readConfigFile(configFile)
4
задан 12 November 2012 в 23:15

3 ответа

Быстро приложения используют схемы glib для настроек приложения. Схема по умолчанию создана в data/glib-2.0/schemas. Это XML-файл с именем net.launchpad.XXXX.gschema.xml, где XXXX - имя вашего приложения.

Вот пример записи:

<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="drawers">
  <schema id="net.launchpad.drawers" path="/net/launchpad/drawers/">
    <key name="maxicons-row" type="i">
      <range min="1" max="15"/>
      <default>5</default>
      <summary>Maximum Icons per Row</summary>
      <description>Minimum value = 1 Max=15</description>
    </key>
  </schema>
</schemalist>

Ключи могут быть целыми числами (type = "i"), логическими (type = "b") или плавающими (type = "d"). Используйте только строчные буквы и - в именах ключей.

Чтобы получить доступ к настройкам и связать их с виджетами, вы можете получить их следующим образом (взято из PreferencesXXXXWindow.py, сгенерированного быстро):

def finish_initializing(self, builder):# pylint: disable=E1002
    """Set up the preferences dialog"""
    super(PreferencesDrawersDialog, self).finish_initializing(builder)

    # Bind each preference widget to gsettings
    self.settings = Gio.Settings("net.launchpad.drawers")
    widget = self.builder.get_object('maxicons_row')
    self.settings.bind("maxicons-row", widget, "value", Gio.SettingsBindFlags.DEFAULT)

Чтобы прочитать значения переменных в программе, вы можете сделайте следующее:

from gi.repository import Gio
settings = Gio.Settings("net.launchpad.drawers")
integer=settings.get_int("intsetting")
float = settings.get_double("floatsetting")
bool = settings.get_boolean("booleansetting")

Надеюсь, что поможет.

0
ответ дан 12 November 2012 в 23:15

Если вы храните пользовательские данные, вы обычно сохраняете их в $ HOME / .config / $ YOURAPP / (хотя пользователь может изменить это, поэтому лучше использовать xdg.BaseDirectory.xdg_config_home ).

Если вы используете Python, я рекомендую библиотеку ConfigParser , которая упрощает чтение и запись данных структурированного файла конфигурации.

0
ответ дан 12 November 2012 в 23:15

У меня нет большого опыта работы с Linux. Но с аналогичной проблемой я столкнулся, работая над моим приложением.

В linux каждое приложение генерирует файл, который включает в себя все настройки. Если это собственное приложение для Linux, вы можете легко найти файл в папке "/ etc /".

, пожалуйста, предоставьте образец названия приложения для получения более подробной информации.

Надеюсь, это поможет тебе найти свой путь.

0
ответ дан 12 November 2012 в 23:15

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

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