2010-07-12 15 views
9

caso semplicemultipiattaforma indirizzamento del file di configurazione

Ho un programma Python che intendo sostenere su entrambi i sistemi * nix e Windows. Il programma deve essere configurabile, almeno a livello globale. Esiste un modo multipiattaforma per indirizzare il file di configurazione?

I.e. Voglio scrivere invece di

import platform 
if platform.system() == "Windows": 
    configFilePath = "C:\MyProgram\mainconfig.ini" 
else: 
    configFilePath = "/etc/myprogram/mainconfig.ini" 

qualcosa sulla falsariga di

import configmagic 
configFile = configmagic("myprogram", "mainconfig") 


Un po 'più avanzate casi

Lo stesso può essere applicato a utenti specifici configurazione? Cioè mantenere la configurazione in ~user/.myprogram/ sotto Unix e nella sezione del registro HKEY_LOCAL_USER in Windows?

+0

Possibile dupe di http://stackoverflow.com/questions/200599/whats-the-best-way-to-store-simple-user-settings-in-python e http://stackoverflow.com/questions/965694/ whats-the-official-way-of-storing-settings-for-python-programs – rubenvb

+1

Grazie per il suggerimento, ma non è davvero un dupe. Queste due domande riguardano il formato del file di configurazione, mentre la mia domanda riguarda la sua posizione. – dpq

+1

Non utilizzare ~/.myprogram, utilizzare XDG BaseDir Spec, che definisce dove * si * deve memorizzare/leggere le configurazioni. (per impostazione predefinita, ~/.config/mioprogramma). – WhyNotHugo

risposta

4

Python permetterà percorsi forward-slash su Windows, e funziona su Windows os.path.expanduser anche, in modo da poter ottenere un percorso di file specifico dell'utente utilizzando:

config_file = os.path.expanduser("~/foo.ini") 

se si vuole trovare un .ini nella directory home dell'utente. Non sono sicuro di come unificare le impostazioni .ini e del Registro di sistema basate su file.

+0

Grande, e c'è un modo per risolvere il primo caso (percorso globale del file di configurazione)? – dpq