[Python] Variabili su file esterno
Alessandro Re
ale a ale-re.net
Lun 11 Lug 2022 10:09:18 CEST
-------- Original Message --------
On Jul 10, 2022, 19:25, Marcello Ilardi < marcello a linuxvil.it> wrote:
Salve a tutti, in un mio programma, per creare file di configurazione, utilizzo il seguente codice: variabili = {} variabili['IPADDRESS'] = '192.168.1.2' variabili['NETMASK'] = '255.255.255.0' variabili['GATEWAY'] = '192.168.1.1' configurazione = (f''' net.static.IP = {variabili['IPADDRESS']} net.static.SubnetMask = {variabili['NETMASK']} net.static.Gateway = {variabili['GATEWAY']} ''') print(configurazione) In questo modo mi vengono sostituite correttamente le variabili. adesso ho la necessità, visto la lunghezza di 'configurazione' (più di 1000 righe) di creare un file dove metto la sola variabile 'configurazione' e all'occorrenza leggere il file e impostare correttamente le variabili. Il problema che leggendo da un file esterno non riesco a sostituite le variabili tra grafe. Nel file.txt metto: net.static.IP = {variabili['IPADDRESS']} net.static.SubnetMask = {variabili['NETMASK']} net.static.Gateway = {variabili['GATEWAY']} il programma py: variabili = {} variabili['IPADDRESS'] = '192.168.1.2' variabili['NETMASK'] = '255.255.255.0' variabili['GATEWAY'] = '192.168.1.1' with open((f'''file.txt'''), "r") as configurazione_tmp: configurazione = configurazione_tmp.read() print(configurazione) Come posso risolvere? Grazie a tutti, Saluti Marcello _______________________________________________ Python mailing list Python a lists.python.it https://lists.python.it/mailman/listinfo/python
Ciao,
non so se hanno già dato la stessa risposta perché temo di essermi perso qualche mail, ma oltre allr alternative già citate (yaml, db, config parser) puoi anche formattare la stringa esplicitamente usando il metodo str.format o str.format_map, che fa sostanzialmente quello che viene fatto implicitamente quando usi le f-strings (f""). ecco un esempio per darti un'idea di come puoi usare format_map:
s = "foo = {bar}"
d = dict(bar="1234")
print(s.format_map(d)) # foo = 1234
comunque è un sistema fragile di sostituzione, quindi anche se potrebbe essere conveniente nel tuo caso, potresti optare per qualcosa di più robusto se fosse per un lavoro più che amatoriale.
ciao
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20220711/46555616/attachment.html>
Maggiori informazioni sulla lista
Python