Accordiing alla documentazione ConfigParser module, file
di configurazione possono includere commenti, preceduti da specifici caratteri (# e;). I commenti possono apparire da soli in una riga vuota oppure possono essere immessi nelle righe contenenti i valori o nella sezione nomi. In quest'ultimo caso, devono essere preceduti da un carattere di spazio vuoto da riconoscere come commento. (Per compatibilità all'indietro, solo; inizia un commento in linea, mentre # non lo fa.)
Se vuoi leggere il "Commento" con il valore, è possibile omettere gli spazi prima del carattere ;
o utilizzare il #
. Ma in questo caso le stringhe comment1
e comment2
diventano parte del valore e non sono più considerate commenti.
Un approccio migliore sarebbe quella di utilizzare un nome di proprietà diversa, come ad esempio variable1_comment
, oppure per definire un'altra sezione nella configurazione dedicata ai commenti:
[local]
variable1 = value1
[comments]
variable1 = comment1
La prima soluzione richiede di generare una nuova chiave utilizzando un altro (ad esempio, calcolare variable1_comment
da variable1
), l'altro consente di utilizzare lo stesso tasto di targeting sezioni diverse nel file di configurazione.
A partire da Python 2.7.2, è sempre possibile leggere un commento lungo la linea se si utilizza il carattere #
. Come dicono i documenti, è per compatibilità con le versioni precedenti.Il seguente codice dovrebbe funzionare senza problemi:
config = ConfigParser.ConfigParser()
config.read('config.ini')
assert config.get('local', 'variable1') == 'value1'
assert config.get('local', 'variable2') == 'value2 # comment2'
per il config.ini
seguente file:
[local]
variable1 = value1 ; comment1
variable2 = value2 # comment2
Se si adotta questa soluzione, ricordate per analizzare manualmente il risultato di get()
per i valori e commenti.
aggiornato la domanda, si trattava di un errore di battitura, i messaggi nel file è in uso; carattere seguito da # carattere – avasal