Wie liest man eine Eigenschaftendatei in Python?

Wir können das Modul jproperties verwenden, um eine Eigenschaftendatei in Python zu lesen. Eine Eigenschaftendatei enthält Schlüssel-Wert-Paare in jeder Zeile. Das Gleichheitszeichen (=) fungiert als Trennzeichen zwischen Schlüssel und Wert. Eine Zeile, die mit # beginnt, wird als Kommentar behandelt.

Installation der jproperties-Bibliothek

Dieses Modul ist nicht Teil der Standardinstallation. Wir können das jproperties-Modul mit PIP installieren.

# pip install jproperties

Lesen einer Eigenschaftendatei in Python

I have created a properties file for our example: app-config.properties.

# Database Credentials
DB_HOST=localhost
DB_SCHEMA=Test
DB_User=root
DB_PWD=root@neon

# Datenbank Zugangsdaten

from jproperties import Properties

configs = Properties()

Der erste Schritt besteht darin, das Properties-Objekt in unser Python-Programm zu importieren und es zu instanziieren.

with open('app-config.properties', 'rb') as config_file:
    configs.load(config_file)

Der nächste Schritt besteht darin, die Eigenschaftendatei in unser Properties-Objekt zu laden.

Empfohlene Lektüre: Python with-Anweisung

Jetzt können wir eine bestimmte Eigenschaft mit der Methode get() oder über den Index lesen. Das Properties-Objekt ist sehr ähnlich einem Python Dictionary.

print(configs.get("DB_User"))  
Der Wert wird in einem PropertyTuple-Objekt gespeichert, das ein benanntes tuple von zwei Werten ist - data und meta. Die jproperties unterstützen auch Eigenschaftsmetadaten, aber das interessiert uns hier nicht. 

print(f'Database User: {configs.get("DB_User").data}')  
# PropertyTuple(data='root', meta={})

print(f'Database Password: {configs["DB_PWD"].data}')  
# Datenbankbenutzer: root

# Datenbankpasswort: root@neon

print(f'Properties Count: {len(configs)}')  
Wir können die Funktion len() verwenden, um die Anzahl der Eigenschaften zu erhalten. 

# Anzahl der Eigenschaften: 4

Was ist, wenn der Schlüssel nicht existiert?

random_value = configs.get("Random_Key")
print(random_value)  Wenn der Schlüssel nicht existiert, gibt die Methode get() None zurück. 

# None

try:
    random_value = configs["Random_Key"]
    print(random_value)
except KeyError as ke:
    print(f'{ke}, lookup key was "Random_Key"')

Aber wenn wir den Index verwenden, wird ein KeyError ausgelöst. In diesem Fall ist es besser, diese Ausnahme mit einem try-except-Block zu behandeln.
# Ausgabe:

# ‚Schlüssel nicht gefunden‘, Suchschlüssel war „Random_Key“

Drucken aller Eigenschaften

items_view = configs.items()
print(type(items_view))

for item in items_view:
    print(item)

Wir können die items() Methode verwenden, um eine Sammlung von Tupeln zu erhalten, die Schlüssel und entsprechende Eigenschaftswerte enthalten.

<class 'collections.abc.ItemsView'>
('DB_HOST', PropertyTuple(data='localhost', meta={}))
('DB_SCHEMA', PropertyTuple(data='Test', meta={}))
('DB_User', PropertyTuple(data='root', meta={}))
('DB_PWD', PropertyTuple(data='root@neon', meta={}))

Ausgabe:

for item in items_view:
    print(item[0], '=', item[1].data)

Da wir den Schlüssel=Wert als Ausgabe drucken möchten, können wir den folgenden Code verwenden.

DB_HOST = localhost
DB_SCHEMA = Test
DB_User = root
DB_PWD = root@neon

Ausgabe:

Auflistung der Schlüssel aus der Eigenschaftendatei

from jproperties import Properties

configs = Properties()

with open('app-config.properties', 'rb') as config_file:
    configs.load(config_file)

items_view = configs.items()
list_keys = []

for item in items_view:
    list_keys.append(item[0])

print(list_keys)  
Hier ist ein vollständiges Programm zum Lesen der Eigenschaftendatei und Erstellen einer Liste aller Schlüssel.

# [‚DB_HOST‘, ‚DB_SCHEMA‘, ‚DB_User‘, ‚DB_PWD‘]

A properties file is the same as a dictionary. So, it’s a common practice to read the properties file into a dictionary. The steps are similar to above, except for the change in the iteration code to add the elements to a dictionary.

db_configs_dict = {}

for item in items_view:
    db_configs_dict[item[0]] = item[1].data

print(db_configs_dict)
Python liest Eigenschaftsdatei in Wörterbuch ein

# {‚DB_HOST‘: ‚localhost‘, ‚DB_SCHEMA‘: ‚Test‘, ‚DB_User‘: ‚root‘, ‚DB_PWD‘: ‚root@neon‘}

Source:
https://www.digitalocean.com/community/tutorials/python-read-properties-file