2010-07-12 13 views
9

caso simpleCruz-plataforma de direccionamiento del archivo de configuración

que tiene un programa de Python que tengo la intención de apoyar a ambos sistemas * nix y Windows. El programa debe ser configurable, al menos globalmente. ¿Hay una forma de plataforma cruzada para abordar el archivo de configuración?

I.e. Quiero escribir en lugar de

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

algo en la línea de

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


Un poco más avanzada de casos

¿Puede el mismo puede aplicar a usuarios específicos ¿configuración? Es decir. para mantener la configuración en ~user/.myprogram/ en Unix, y en la sección de registro HKEY_LOCAL_USER en Windows?

+0

Posible engaño de http://stackoverflow.com/questions/200599/whats-the-best-way-to-store-simple-user-settings-in-python y http://stackoverflow.com/questions/965694/ whats-the-official-way-of-storage-settings-for-python-programs – rubenvb

+1

Gracias por la sugerencia, pero en realidad no es una tontería. Esas dos preguntas son sobre el formato del archivo de configuración, mientras que mi pregunta es sobre su ubicación. – dpq

+1

No use ~/.myprogram, use la especificación XDG BaseDir, que define dónde * debe * almacenar/leer sus configuraciones. (de forma predeterminada, ~/.config/myprogram). – WhyNotHugo

Respuesta

4

Python permitirá caminos barra diagonal en Windows, y os.path.expanduser obras en Windows también, para que pueda obtener una ruta de archivo específico del usuario usando:

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

si usted quiere encontrar una ini en el directorio de inicio del usuario. No estoy seguro de cómo unificar las configuraciones de registro y .ini basadas en archivos.

+0

Genial, y ¿hay alguna manera de resolver el primer caso (ruta del archivo de configuración global)? – dpq

Cuestiones relacionadas