人間が読める最も単純な構成ファイル形式は何ですか?[閉まっている]


13

現在の構成ファイルは次のとおりです。

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'

これは、Pythonを使用してネストされた辞書に読み込まれます。

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

これを行うより良い方法はありますか?考え方は、XMLタイプの動作を取得し、できるだけXMLを避けることです。エンドユーザーは、ほぼ完全にコンピューターの読み書きができないと想定され、基本的にはメモ帳とコピーアンドペーストを使用します。したがって、Python標準の「ヘッダー+変数」タイプは難しすぎると見なされます。

ダミーのユーザーが構成ファイルを編集し、プログラマーが辞書を処理します。ネストされた辞書は、簡単に分割できるように選択されています(ロガーはメインウィンドウのパラメーターを必要としないか、編集することさえできません)。


11
絶対に最も簡単なのは、これらの構成ファイルを編集するだけの小さなアプリをクライアントに構築することです。
パトリックヒューズ

11
最も簡単な設定ファイル人間のためには、次のとおりです。Do what I want.これは、コンピュータ用の最も難しいです、しかし:P
Sjoerd

@PatrickHughesすでに存在していると思います。そのようなプログラムを知っていますか。単純なものを「きれいに印刷」するためだけに時間をかけたくありません。問題は、小さなプログラムブレークを追加するにはさらに多くが必要なことです。つまり、すべてのコンピューターにはvim、textedit、またはメモ帳があります。
ジュハ

@sjoerdこれは私が知りたかったことです。この意味で、プログラムよりも人間の言語により近いアルゴリズムがありますか。
ジュハ

2
ユーザーは何でも壊すことができます。手動で編集する場合は、サポートする準備をしてくださいmainwindow.title =='test"
MSalters

回答:


15

YAMLのようなものを使用できます。例へのリンクは次のとおりです。

http://www.yaml.org/start.html

--- !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.

PyYAMLでPythonバインディングを見つけることができます。JSONよりもユーザーフレンドリーです(2番目の例のように見えます)。


10
YAMLはダンディですが、間違いなく最も単純ではありません。
9000

1
私は彼の質問の文脈で最も単純だと思った:「XMLタイプの振る舞いを取得し、XMLをできるだけ長く避ける」。この要件を満たしている間、私はもっと簡単なものがわからない。
jmq

うーん、「。」を変更した場合の最初のコードブロックYAMLです。および「=」から「:」へと変化し、失明症を失いますか?少し冗長なデータがありますが、ユーザーがどの記法を最も好むかはユーザー次第です。
ジュハ

3
私は非技術的なユーザーがインデント間違っ得ようとしているかなり確信している-おろかような、よりあいまいなもの>の後をcomments:、と&し、*目の前でid001
Izkata

6

できる最善の方法は、ソリューションのモックアップ、およびおそらく他のいくつかのソリューションのモックアップを提供し、システムの2〜3人の代表ユーザーに尋ねることです。彼らは、このサイトで質問に答える自分で選んだ人々よりも、自分の好きなものをあなたに伝えるのがずっと上手です。

そうは言っても、「基本的にコンピューターの知識がない」ユーザーの場合、質問で表示する形式はおそらく最高のプレーンテキスト形式だと思います。それらが本当にコンピューターに精通していない場合、構成ファイルを手動で編集する必要がないように、単純なGUIを検討することをお勧めします。


3

あなたが失うことができるすべてを失います。 name.name.name=value、それぞれ別の行にあり、あなたが得ることができるほど簡単です。解析に引用符は必要ありません。いつtrueブール値であり、いつtrue文字列であるかを知っているので、「愚かな人間」にそれを伝えないでください。文字列の場合、フィールドに先頭または末尾の空白を含めない場合は、自分で削除します。


3

あなたの設定ファイルを読もうとしている英語を知らない中国人を想像してください。または、構成ファイルがアラビア語であると想像してください(アラビア語がわからない)。自問してください、これは本当に人間が読めるのですか?

読者が英語を知っていても、「logger.datarate = 100」が1秒あたり100文字、1時間あたり100 GiB、1メートルトンあたり100羽の鶏を意味するかどうかはわかりません。

最も人間が読めるファイル形式は、適切なGUIベースのダイアログボックス/ウィザード/コンフィギュレータ(国際化、ヘルプシステムなど)を備えたバイナリファイルです。


2

パトリック・ヒューズと一緒です。構成を編集するためのシンプルなアプリを作成します。構成ファイル自体はもう少し複雑で、エディターが使用する属性(表示名、ヘルプテキスト、値の種類、最小値/最大値など)を含む場合があります。


1
ここでの問題は、アプリがosx、win、ubuntuをサポートし、ファイルシステムにアクセスできる必要があることです。したがって、私の唯一の代替手段は静的なPython実行可能ファイル(およびネイティブルック用のwx)です。または、他の言語はありますか?静的Java実行可能ファイルを作成できますか?
ユハ

QTアプリは、あなたの場合、シンプルでコンフォーマルなソリューションになります
リガ14年

2

あなたが持っているもの(プロパティファイル)は、すでに人間が読むことができる最高の設定形式です。:)

私の主張は次のとおりです。

  • プロパティファイルはキーと値のペアです。人間が読みやすい。
  • xmlとは異なり、簡潔な構文。
  • 例のように、 '。'を使用して簡単にネストできます。
  • 平らな構造により、ソース管理された環境で簡単に拡散できます。

最後の点は実際には非常に重要です。最近のプロジェクトはすべてブランチに分割されているため、ブランチをマージする際に構成ファイルが非常に大きな痛みを引き起こす可能性があります。プロパティファイルのようなフラットファイル形式は、ツリー構造ファイルよりも簡単にマージできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.