Câu hỏi Lưu trữ tùy chọn và dữ liệu ứng dụng


Tôi đang xem xét việc tạo ra một số ứng dụng Ubuntu, nhưng việc tìm kiếm các resoures rất khó.

Tôi đang sử dụng bộ công cụ nhanh chóng, nhưng thực sự muốn hiểu rõ hơn. Làm cách nào để lưu trữ các tùy chọn và cài đặt ứng dụng trong Linux / Ubuntu.

Nó đơn giản như việc tạo một tập tin XML và lưu thông tin và sau đó đọc từ tập tin đã nói trên bootstrap ứng dụng?

Nếu ai đó có thể chỉ cho tôi theo một hướng nó sẽ được đánh giá cao.

CHỈNH SỬA

Đây là một cái gì đó tôi đã viết trong khi chờ đợi một câu trả lời. Có lẽ chính xác những gì sở thích, nhưng chỉ cần mã hóa ra. Bạn có thể thấy nó hữu ích:

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
2017-11-07 10:24


gốc


Hãy xem những câu hỏi sau: askubuntu.com/questions/59822/…  askubuntu.com/questions/4420/… - mivoligo


Các câu trả lời:


Các ứng dụng nhanh chóng sử dụng các lược đồ glib cho các tùy chọn ứng dụng. Lược đồ mặc định được tạo trong data/glib-2.0/schemas. Đó là một tệp xml có tên net.launchpad.XXXX.gschema.xml trong đó XXXX là tên ứng dụng của bạn.

Đây là một mục ví dụ:

<?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>

Khóa có thể là số nguyên (type = "i"), boolean (type = "b") hoặc float (type = "d"). Chỉ sử dụng chữ thường và - trong các tên chính.

Để truy cập các thiết lập và liên kết chúng với các widget, bạn có thể nhận chúng như sau (lấy từ PreferencesXXXXWindow.py được tạo ra một cách nhanh chóng):

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)

Để đọc các giá trị cho các biến trong một chương trình, bạn có thể thực hiện các thao tác sau:

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")

Hy vọng rằng sẽ giúp.


2
2017-11-08 19:17



Cảm ơn bạn Ian, đó là chắc chắn thanh lịch hơn sau đó giải pháp của tôi mà tôi đã kết thúc với. - Rudi Strydom


Nếu bạn đang lưu trữ dữ liệu người dùng, bạn thường lưu nó dưới $ HOME / .config / $ YOURAPP / (mặc dù người dùng có thể thay đổi điều này, vì vậy tốt hơn nên sử dụng xdg.BaseDirectory.xdg_config_home).

Nếu bạn đang sử dụng Python, tôi khuyên bạn nên sử dụng ConfigParser thư viện giúp dễ đọc và ghi dữ liệu tệp cấu hình có cấu trúc.


2
2017-11-08 14:48





Tôi không có nhiều kinh nghiệm làm việc với Linux. Nhưng vấn đề tương tự tôi phải đối mặt trong khi làm việc trên ứng dụng của tôi.

Trong Linux, mỗi ứng dụng tạo ra một tập tin bao gồm tất cả các thiết lập. Nếu ứng dụng riêng của Linux, bạn có thể dễ dàng tìm kiếm tệp trong thư mục "/ etc /".

vui lòng cung cấp một số tên ứng dụng mẫu để biết thêm chi tiết.

Hy vọng điều này có thể giúp bạn tìm đường.


0
2017-11-07 10:44



/ etc / là dành cho cài đặt trên toàn hệ thống, chứ không phải cài đặt người dùng. - mhall119