Qual è il formato di file di configurazione leggibile più semplice dall'uomo? [chiuso]

12

Il file di configurazione corrente è il seguente:

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'

Questo viene letto con python in un dizionario annidato:

{
  'mainwindow':{
    'button':{
      'label': {'value':'apply'},
       ...
  },
  'logger':{
     datarate: {'value': 100},
     enable: {'value': True},
     filename: {'value': './test.log'}
  }, 
  ...    
}

C'è un modo migliore per farlo? L'idea è di ottenere un tipo di comportamento XML ed evitare XML il più a lungo possibile. Si presume che l'utente finale sia quasi totalmente analfabeta dal computer e utilizza fondamentalmente il blocco note e il copia-incolla. Quindi il tipo standard "header + variables" di python è considerato troppo difficile.

L'utente fittizio modifica il file di configurazione, i programmatori in grado di gestire i dizionari. Il dizionario nidificato è scelto per una facile suddivisione (il logger non ha bisogno o non può nemmeno avere / modifica parametri mainwindow).

    
posta Juha 26.03.2012 - 16:11
fonte

6 risposte

14

Potresti usare qualcosa come YAML . Ecco un link ad un esempio:

link

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

Puoi trovare collegamenti Python per questo a PyYAML . È un po 'più user friendly di JSON (che è il tuo secondo esempio)

    
risposta data 26.03.2012 - 17:05
fonte
6

La cosa migliore che puoi fare è fornire un prototipo della tua soluzione e forse un modello di un paio di altre soluzioni e chiedere a due o tre utenti rappresentativi del tuo sistema. Saranno molto più bravi a dirti quello che preferiscono rispetto alle persone autoselezionate che rispondono alle domande su questo sito.

Detto questo, per gli utenti "fondamentalmente analfabeti informatici" penso che il formato che mostri nella tua domanda sia probabilmente il miglior formato di testo normale. Se sono davvero analfabeti informatici, potresti prendere in considerazione una semplice GUI in modo che non debbano modificare manualmente i file di configurazione.

    
risposta data 27.03.2012 - 15:11
fonte
3

Perdi tutto ciò che puoi perdere. name.name.name=value , ciascuno su una linea separata, è più semplice che puoi ottenere. Non hai bisogno delle virgolette per l'analisi, sai quando true è un valore booleano e quando true è una stringa, non fare in modo che il "muto umano" ti dica questo. Per le stringhe, se il campo non deve contenere spazi vuoti iniziali / finali, strappali da soli.

    
risposta data 27.03.2012 - 23:10
fonte
3

Immagina un cinese che non conosce l'inglese che sta cercando di leggere il tuo file di configurazione. In alternativa, immagina che il file di configurazione sia in arabo (e che tu non sappia l'arabo). Ora chiediti, è davvero leggibile?

Anche se il lettore conosce l'inglese, non ha ancora idea se "logger.datarate = 100" significa 100 caratteri al secondo o 100 GiB all'ora o 100 polli per metrica.

Il formato di file leggibile più umano, è un file binario con una finestra di dialogo / wizard / configuratore decente basata su GUI (con internazionalizzazione, sistema di guida, ecc.)

    
risposta data 18.11.2014 - 07:40
fonte
2

Sono con Patrick Hughes. Crea una semplice app per modificare le configurazioni. Il file di configurazione potrebbe essere un po 'più complesso e potrebbe contenere attributi da usare per l'editor (nome visualizzato, testo della guida, tipo di valore, valore min / max, ecc.).

    
risposta data 27.03.2012 - 19:25
fonte
2

Dico che quello che hai (file delle proprietà) è già il miglior formato di configurazione leggibile dall'uomo. :)

Ecco i miei argomenti:

  • Il file delle proprietà è solo una coppia chiave / valore. Facilmente leggibile da umani.
  • Tersa sintassi, non come xml.
  • Facilmente nidificante, con '.', come nell'esempio.
  • La struttura piatta consente una facile diffusione in un ambiente controllato dalla sorgente.

L'ultimo punto è in realtà piuttosto importante. Dato che oggigiorno i progetti sono tutti suddivisi in rami, il file di configurazione può causare tonnellate di dolore quando si uniscono rami. Il formato file flat come il file delle proprietà è più facile da unire rispetto al file struttura ad albero.

    
risposta data 18.11.2014 - 02:01
fonte

Leggi altre domande sui tag