Table of Contents
Snippets: Python
Konfigurationsdateien lesen
INI-Dateien
Python enthält mit configparser bereits von Haus aus Unterstützung zum lesen von Konfigurationsdateien im INI-Format.
Nachdem eine Instanz der Klasse configparser.ConfigParser erstellt wurde, muss nur noch mit load() die Konfigurationsdatei geladen werden. Danach kann die Parser-Instanz wie ein verschachteltes Dict benutzt werden.
Im folgenden Beispiel werden so die Zugangsdaten zu einer MySQL-Datenbank aus gelesen und eine Verbindung aufgebaut.
[APP] DEBUG = False [DATABASE] HOST = 127.0.0.1 USER = root PASSWORD = p@ssw0rd DB = my_database
import configparser import MYSQLdb # Konfigurationsdatei lesen config = configparser.ConfigParser() config.read("config.ini") # Der Parser wird wie ein Dict in einem Dict ausgelesen: if config["APP"]["DEBUG"]: print("Debug mode enabled") db = MySQLdb.connect( config["DATABASE"]["HOST"], config["DATABASE"]["USER"], config["DATABASE"]["PASSWORD"], config["DATABASE"]["DB"] ) db.close()
Skript inkl. Abhängigkeiten als ausführbare ZIP-Datei
Achtung! Dieses Snippet ist nur eine Roh-Fassung und muss noch überarbeitet werden!
Mithilfe von Pythons zipapp-Modul lassen sich ausführbare ZIP-Archive erstellen, die ein Skript und alle seine Abhängigkeiten enthalten können.
Die erzeugte Datei ist ein ZIP-Archiv mit Shebang, und kann so auf jedem System ausgeführt werden, solange Python installiert ist (Was unter Unix/Linux meist der Fall ist).
Das folgende Skript erstellt eine zipapp für pushover-notify (Teil meiner Skriptsammlung, sendet Benachrichtigungen über Pushover):
# Python zipapp for pushover-notify cd "$(dirname $0)" wget "https://raw.githubusercontent.com/malte70/scripts/refs/heads/master/pushover-notify" echo '# requirements.txt # for standalone pushover-notify zipapp pushover @ git+https://github.com/Wyattjoh/pushover@5852545c5b9cf2717e1eafc4c8b134a08b0994da toml==0.10.2 ' > requirements_pushover_notify.txt # # Create pushover_notify package containing the script and # all of it's dependencies # mkdir pushover_notify/ # Empty __init__.py touch pushover_notify/__init__.py # The script itself cp pushover-notify pushover_notify/__main__.py # requirements.txt # (used later to install dependencies into the pushover_notify package) mv requirements_pushover_notify.txt pushover_notify/requirements.txt # Example config echo '[pushover] appname = "MyApp" api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" user_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Optional: Alternative apps [app.foo] appname = "Foo" api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ' > pushover_notify/pushover-notify.toml # Install external requirements python -m pip install -r pushover_notify/requirements.txt --target pushover_notify/ # Clean up after pip rm -rf pushover_notify/{__pycache__,bin,*.dist-info} # # Create a .pyz file from the module pushover_notify # python -m zipapp \ pushover_notify/ \ -p "/usr/bin/env python3" \ -o po-notify.pyz \ -c
