El archivo de configuración actual es el siguiente:
mainwindow.title = 'test'
mainwindow.position.x = 100
mainwindow.position.y = 200
mainwindow.button.label = 'apply'
mainwindow.button.size.x = 100
mainwindow.button.size.y = 30
logger.datarate = 100
logger.enable = True
logger.filename = './test.log'
Esto se lee con python en un diccionario anidado:
{
'mainwindow':{
'button':{
'label': {'value':'apply'},
...
},
'logger':{
datarate: {'value': 100},
enable: {'value': True},
filename: {'value': './test.log'}
},
...
}
¿Hay una mejor manera de hacer esto? La idea es obtener un tipo de comportamiento XML y evitar XML el mayor tiempo posible. Se supone que el usuario final es un analfabeto informático casi totalmente y básicamente usa el bloc de notas y el copiar y pegar. Por lo tanto, el tipo estándar de "encabezado + variables" de Python se considera demasiado difícil.
El usuario ficticio edita el archivo de configuración, los programadores capaces manejan los diccionarios. El diccionario anidado se elige para una división fácil (el registrador no necesita o incluso no puede tener / editar los parámetros de la ventana principal).
Do what I want.
Sin embargo, es el más difícil para las computadoras: Pmainwindow.title =='test"
Respuestas:
Podrías usar algo como YAML . Aquí hay un enlace a un ejemplo:
http://www.yaml.org/start.html
Puede encontrar enlaces de Python para ello en PyYAML . Es un poco más fácil de usar que JSON (que es el aspecto de su segundo ejemplo).
fuente
>
despuéscomments:
, y la&
y*
frenteid001
Lo mejor que puede hacer es proporcionar una maqueta de su solución, y tal vez una maqueta de un par de otras soluciones, y preguntar a dos o tres usuarios representativos de su sistema. Serán mucho mejores para decirle lo que les gusta que las personas autoseleccionadas que responden preguntas en este sitio.
Dicho esto, para los usuarios "básicamente analfabetos informáticos", creo que el formato que muestra en su pregunta es probablemente el mejor formato de texto sin formato. Si realmente son analfabetos informáticos, es posible que desee considerar una GUI simple para que no tengan que editar manualmente los archivos de configuración.
fuente
Pierde todo lo que puedas perder.
name.name.name=value
, cada uno en una línea separada, es lo más simple posible. No necesita las comillas para analizar, sabe cuándotrue
es un booleano y cuándotrue
es una cadena, no haga que el "humano tonto" le diga eso. Para cadenas, si el campo no debe tener espacios en blanco iniciales / finales, quítelos usted mismo.fuente
Imagine una persona china que no sabe inglés y que está tratando de leer su archivo de configuración. Alternativamente, imagine que el archivo de configuración está en árabe (y que no sabe árabe). Ahora pregúntate, ¿esto es realmente legible por humanos?
Incluso si el lector sabe inglés, todavía no tiene idea de si "logger.datarate = 100" significa 100 caracteres por segundo, o 100 GiB por hora, o 100 pollos por tonelada métrica.
El formato de archivo más legible para humanos es un archivo binario con un cuadro de diálogo / asistente / configurador decente basado en GUI (con internacionalización, sistema de ayuda, etc.).
fuente
Estoy con Patrick Hughes. Cree una aplicación simple para editar configuraciones. El archivo de configuración en sí mismo podría ser un poco más complejo y podría contener atributos para que el editor los use (nombre para mostrar, texto de ayuda, tipo de valor, valor mínimo / máximo, etc.).
fuente
Digo que lo que tienes (archivo de propiedades) ya es el mejor formato de configuración legible por humanos. :)
Aquí están mis argumentos:
Ese último punto es realmente bastante importante. Dado que los proyectos hoy en día están divididos en ramas, el archivo de configuración puede causar mucho dolor al fusionar ramas. El formato de archivo plano como el archivo de propiedades es más fácil de combinar que el archivo de estructura de árbol.
fuente