In Linux, è più comune vedere ".File conf "rispetto a".file ini ”. I file conf in linux sono come qualsiasi altro file di testo e quindi possono essere strutturati in alcun modo. Dipende dal parser come interpreta ".FILE CONF ”. Il modulo configparser di Python può analizzare ".File anche di configurazione (o qualsiasi altra estensione casuale), a condizione che questi file siano definiti in linguaggio di configurazione compatibile INI. Questo articolo spiegherà la lettura e la scrittura ".Conf ”Files in Linux utilizzando l'ultima versione stabile di Python 3. Si noti che se si sostituiscono tutte le occorrenze di ".Conf ". Estensione in questo articolo con".Estensione ini ”, il risultato sarebbe lo stesso. Il processo e il codice spiegati di seguito dovrebbero essere per lo più compatibili anche con Microsoft Windows, con alcune differenze minori. Sebbene queste differenze non saranno trattate in questo articolo.
Modulo configparser
Il parser di configurazione o configparser è un modulo Python che consente di leggere e scrivere i file di configurazione utilizzati nelle app Python. Come spiegato sopra, questo modulo supporta la sintassi del file INI. Un "molto semplicistico".ini " /".Il file conf ”sembra così.
[PREDEFINITO]L'esempio ".Il file Conf ”sopra ha due sezioni," predefinito "e" utente ". Di solito i programmi Python sono codificati in modo tale che i valori di sezione predefiniti non vengano mai modificati. La sezione predefinita viene utilizzata per ripristinare i valori complessivi o singoli ai valori predefiniti. La sezione utente riflette le modifiche apportate da un utente finale che utilizza il programma Python. Si noti che i nomi della sezione possono essere qualsiasi cosa e non è necessario avere una sezione predefinita. Tuttavia, ogni volta che è presente la sezione "predefinita" (il nome dovrebbe essere in maiuscolo), verrà utilizzato per fornire in modo sicuro valori predefiniti se ConfigParser non riesce a analizzare alcune variabili. La logica per gestire queste sezioni, le variabili sotto di esse e i valori di fallback devono essere definite nel programma Python stesso. Simboli come "#" e ";" può essere usato per indicare i commenti in ".file conf ”. Tutte le coppie di valori chiave nel file di configurazione sono insensibili al caso, di solito scritti in minuscolo.
Datipi di gestione di ConfigParser
Prima di andare avanti con alcuni esempi di configParser, è importante comprendere la gestione dei dati di questo modulo. Per ConfigParser, ogni pezzo di codice scritto o analizzato è una stringa. Non può distinguere tra numeri o qualsiasi altro formato. I programmatori devono scrivere la logica nel loro programma per convertire una stringa "1234" in numero utilizzando Int ("1234") mentre si leggono i dati da un ".FILE CONF ”.
Mentre la conversione in numeri usando il metodo INT e Float è un compito abbastanza semplice, la conversione in booleano può essere complicato mentre Python tratta BOOL ("Any_string") per essere vero. Per superare questo problema, è possibile utilizzare dichiarazioni condizionali che controllano una stringa specifica. Il modulo ConfigParser fornisce anche un metodo chiamato "getBoolean ()". Questo metodo può differenziare correttamente "sì"/"no", "su"/"off", "vero"/"false" e "1"/"0" valori booleani anche se sono stringhe. ConfigParser include anche metodi getInt () e getFloat () per la tua comodità.
Scrivere e salvare un nuovo file Conf utilizzando ConfigParser
Supponiamo che ".Il file conf ”sopra menzionato non esiste e si desidera crearlo automaticamente al primo lancio del programma. Il codice seguente creerà una nuova "Impostazioni.File conf ”nella directory da cui è stato eseguito il programma Python.
Importa configparserLa prima istruzione nel codice sopra importa il modulo ConfigParser. La seconda affermazione crea un oggetto simile a un dizionario chiamato "config". Ora puoi utilizzare la sintassi del dizionario Python standard per definire sezioni e variabili incluse sotto di esse, come evidente dalle due dichiarazioni successive. Infine, l'istruzione "con aperta" crea una nuova "impostazione.Conf ”file e scrive sezioni di configurazione nel file.
Il codice sopra funziona, ma c'è un piccolo problema con esso. Crea un nuovo file di impostazioni ogni volta che viene eseguito il programma, con conseguente sovrascrittura di qualsiasi modifica apportata al file delle impostazioni. Per risolvere questo problema, è necessario controllare due condizioni:
Il codice modificato di seguito controllerà le due condizioni e creerà un nuovo file di impostazioni solo se queste due condizioni sono soddisfatte.
Importa configparserLa seconda istruzione nel codice sopra importa il modulo "OS". La variabile "Impostas_file" memorizza il percorso completo alle "Impostazioni.FILE CONF ”da creare nella directory dello script Python. La prossima dichiarazione controlla due condizioni sopra menzionate. La prima clausola nell'affermazione è autoesplicativa. La seconda clausola verifica se la dimensione del file è "0 byte". Un file a byte zero significherebbe un file vuoto senza dati archiviati in esso. Il resto del codice è lo stesso del primo esempio indicato sopra.
Finora i campioni di codice spiegati sopra salvi il file di configurazione nella directory dello script Python stesso. Tuttavia, è una pratica comune e lo standard FreeSktop per salvare i file di configurazione in ".directory config ”nella cartella domestica. Il campione di codice seguente creerà una nuova "Impostazioni.FILE CONF ”in“ ~/.Folder Config/Testapp ".
Importa configparserIl codice sopra è quasi lo stesso dell'esempio precedente, tranne per modificare la posizione di "Impostazioni.CONF ”File a“ ~/.config/testpp/impostazioni.conflitto. La variabile "config_folder" memorizza il percorso completo della cartella dell'applicazione da creare in ".Directory config ”(“ ~/.config/testpp/"). Il "sistema operativo.L'istruzione Makedirs "creerà una nuova cartella dell'app solo se non esiste già. La variabile "full_config_file_path" memorizza il percorso completo del file di impostazioni (“~/.config/testpp/impostazioni.conf ”). Il resto del codice è autoesplicativo.
Leggendo un file conf usando configparser
L'analisi di un file di configurazione è piuttosto semplice. ConfigParser tenta di leggere un valore utilizzando get (), getFloat (), getBoolean () metodi o sintassi del dizionario. In caso di errore chiave, vengono utilizzati i valori della sezione predefinita o dei valori di fallback. È una buona pratica definire la sezione predefinita o i valori di fallback per evitare errori chiave. È possibile utilizzare le istruzioni Try-Eccept e per sopportare gli errori.
config = configparser.Configparser ()Nel campione di codice sopra, “Config.Leggi "L'istruzione viene utilizzata per leggere i dati da un file di configurazione. Nelle seguenti affermazioni, vengono utilizzati vari metodi GET integrati e notazioni del dizionario per leggere i dati. Nella Dichiarazione della variabile "IS_MUSIC_ON", il secondo argomento è il valore di fallback (false). Si noti che i valori di fallback avranno una precedenza inferiore rispetto ai valori definiti nella sezione predefinita. In termini semplici, i valori di fallback non avranno alcun effetto quando una coppia di valore chiave è già presente nella sezione predefinita.
Codice completo
Di seguito è riportato l'intero codice che combina sia la creazione di prima esecuzione del file di configurazione sia la lettura del file di configurazione.
#! /usr/bin/pithon3Conclusione
ConfigParser in Python fornisce un modo utile per gestire le impostazioni di comando e app GUI Python. Questi file di configurazione possono anche essere utilizzati come database basati su testo leggeri ma potrebbero non essere adatti per dati avanzati, set di dati di grandi dimensioni e un gran numero di query.