Hoe lees je een eigenschappenbestand in Python?

We kunnen de jproperties-module gebruiken om een eigenschappenbestand in Python te lezen. Een eigenschappenbestand bevat sleutel-waardeparen in elke regel. Het gelijkteken (=) werkt als de scheidingsteken tussen de sleutel en de waarde. Een regel die begint met # wordt behandeld als een opmerking.

De jproperties-bibliotheek installeren

Deze module maakt geen deel uit van de standaardinstallatie. We kunnen de jproperties-module installeren met behulp van PIP.

# pip install jproperties

Een eigenschappenbestand lezen 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

# Database Credentials

from jproperties import Properties

configs = Properties()

De eerste stap is het importeren van het Properties-object in ons Python-programma en het instantiëren ervan.

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

De volgende stap is het laden van het eigenschappenbestand in ons Properties-object.

Aanbevolen leesmateriaal: Python with Statement

Nu kunnen we een specifieke eigenschap lezen met behulp van de get()-methode of via de index. Het Properties-object lijkt erg op een Python Dictionary.

print(configs.get("DB_User"))  
De waarde is opgeslagen in een PropertyTuple-object, dat een genoemd tuple van twee waarden is - data en meta. De jproperties ondersteunen ook metagegevens voor eigenschappen, maar daar zijn we hier niet in geïnteresseerd.

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

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

# Database-wachtwoord: root@neon

print(f'Properties Count: {len(configs)}')  
We kunnen de len() functie gebruiken om het aantal eigenschappen te krijgen.

# Eigenschappen Telling: 4

Wat als de sleutel niet bestaat?

random_value = configs.get("Random_Key")
print(random_value)  Als de sleutel niet bestaat, zal de get()-methode None teruggeven.

# None

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

Maar als we de index gebruiken, wordt er een KeyError opgeworpen. In dat geval is het beter om deze uitzondering te behandelen met een try-except-blok.
# Uitvoer:

# ‘Sleutel niet gevonden’, opzoekingsleutel was “Random_Sleutel”

Alle Eigenschappen Afdrukken

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

for item in items_view:
    print(item)

We kunnen de items() methode gebruiken om een verzameling van Tuple te krijgen, die sleutels en bijbehorende EigenschapTuple waarden bevat.

<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={}))

Uitvoer:

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

Aangezien we de uitvoer als key=value willen afdrukken, kunnen we de volgende code gebruiken.

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

Uitvoer:

Lijst van Sleutels ophalen uit het Eigenschappenbestand

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 is een volledig programma om het eigenschappenbestand te lezen en een lijst te maken van alle sleutels.

# [‘DB_HOST’, ‘DB_SCHEMA’, ‘DB_Gebruiker’, ‘DB_Wachtwoord’]

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 Lees Eigenschappenbestand in als Woordenboek

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

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