アップデート:
2013 年 3 月 16 日時点の回答 (または未回答) に基づくと、私が考えているようなものはまだ存在しないという印象を受けます。したがって、John Y によって提案された configparser モジュールを使用して、そのようなメカニズムを自分で構築します。
オリジナル:
チェックポイントやコア ダンプについて話しているのではありません。まったく異なるマシンや OS で実行されている同じプログラムのインスタンスで使用できる、移植可能なテキスト ファイルを提供するソリューションについて助けを求めます。
私は主に、Python のコンテキストでこの問題に対処することに関心があります。数年前、私は非常に複雑な Java プログラムを作成しましたが、そのプログラムのユーザー インターフェイスは高度に構成可能でした。ユーザーが構成した状態を簡単に保存し、次にプログラムを使用するときにそれをデフォルトにできるようにしたかったのです。さらに、この目的のために作成されたファイルを人間が読み取って編集できるようにしたかったので、ファイル自体を変更することで、プログラムのさまざまな構成をセットアップする別の方法を利用できるようになりました。私は、出力と読み込みの両方のために、関連するデータ構造の種類ごとに特定のコードを記述する必要があるという、かなり強引な解決策によって問題を解決しました。これは問題に対する良い解決策でした。しかし、実装するのは面倒でした。私は最近、他の誰かが書いた Java プログラムを見ていましたが、彼がこの問題に対するより洗練された解決策を持っていることに気付きました。(ただし、彼のインターフェースのインスタンスを記述するための基礎となるデータベースは、私のものほど精巧ではありませんでした。)
現在、さらに構成可能な別のプログラムを作成しています。Pythonで書いています。私はPythonに関しては初心者です。しかし、私はそれが本当に好きだと言わなければなりません。私は、アセンブリ言語や Fortran から Lisp や APL に至るまで、非常に多くの言語でプログラミングしてきました。そして、Python を学ぶことは、これまでで最も楽しい経験を提供したと言わざるを得ません。それにもかかわらず、私はまだ気づいていない非常に優れた拡張機能と機能に出くわし続けています。Python に関するいくつかの質問に答えるために検索を行った場合、ほとんどの場合、この問題がここ stackoverflow で包括的に対処されていることがわかりました。したがって、ここにいる何人かの人々が私が何を求めているかを理解し、可能であれば、プロセスを容易にするいくつかのツールを教えてくれることを願っています.
構成ファイルについて話しています。そのインスタンスをディストリビューションで使用して、ユーザーが初めてプログラムを使用するときにさまざまなデフォルト構成を設定できます。プログラム自体は、そのようなファイルを書き込むことができ、解釈されると、状態が保存されたときと同じ構成が設定されます。(プログラムが操作するアプリケーション データについて話しているわけではないことに注意してください。これは、保存と復元がかなり簡単なバイナリ ファイルとして扱うことができます。別の問題です。) 設定可能な特定のパラメータを保存することは、単純ではありません。 GUI でウィジェットを使用しますが、それはその一部です。(私は Tkinter を使用しています。)ユーザーが追加のオブジェクトを自由に作成でき、それぞれに独自のウィンドウがあり、それぞれに対処する独自の構成があるという事実によって、問題はさらに複雑になります。
これまでのところ、構成可能にしたいすべてのものの GUI の作成に関与することなく、かなりの量の低レベル コードを作成しました。答えがGUIの実装方法に影響を与える可能性があるため、ここで質問しています。たとえば、「このパラメーターは、状態保存操作のために構成ファイルに保存する必要があるものです」というウィジェットにアタッチできる「もの」があるかもしれません。そして、そのような保存が開始されると、自動的に行われます。さらに、構成が読み戻されたときに出力を解釈するためのメカニズムが自動的に作成されます。
これを完全に自分で行うとしたら、プログラムに Python スクリプトを記述させ、それを解釈すると状態が復元されると考えています。場合によっては、一部のモジュールで値が直接割り当てられることがあります。他の場合では、保存時に適用されたのと同じ方法でいくつかのものを設定する関数の呼び出しがあります。このようなファイルは、Python にあまり詳しくない人でも、大部分は解釈され、ある程度は編集される可能性があります。
とにかく、この問題に対処する方法についての他のアイデアに興味があります。私が達成したいことは珍しいことではないと思うので、解決を容易にするためのツールがいくつか存在することを願っています。説明が長くなってしまい申し訳ありません。しかし、私が求めているものを誤解する可能性のある方向がいくつかあると考え、人々が私がどこから来たのかを確実に理解できるようにしたかったのです. ポインタをいただければ幸いです。
追加した:
理想的には、私が求めるものは次のように機能すると思います。私が考えている意味で構成情報を構成するデータのすべてのビットを識別するために、コードで責任を負います。(たとえば、「このウィジェットの設定を、構成のために保存する必要があるウィジェット設定可能なパラメーターのリストに追加する」などの機能を持っている可能性があります。または、インスタンス化の Thingy クラスは、「ここにある」と言いたい場合があります。構成内の Thingy の別のインスタンスであり、これらは構成可能なその属性です。」) 次に、状態保存操作が要求された時点でその知識を使用して、別のツールがすべての情報の説明をダンプするタスクを引き継ぎます。ファイルにそのように識別されます。別の別のツールを使用して、そのファイルを読み取り、すべてのデータを復元できます。私はそれらのツールを書く準備ができています。しかし、このようなことがすでに行われていることを願っています。
luc への応答 -
説明の中で「GUI」という言葉を強調しすぎていたことに気付いたので、上記の説明を編集して修正しました。
ウィジェットがどのように見えるか、またはそれらが幾何学的にどのように管理されるかについては関心がありません。プログラムはそのすべてを処理します。ptkgen は、ユーザーの視点から見た設定の意味よりも、ウィジェットの外観とレイアウトに関心があるようです。私は、GUI を介して構成可能なものの設定と、存在するウィンドウや画面上の場所などに影響を与えるユーザーが行ったアクションの影響に関心があります。
Python が JSON のエンコードとデコードをサポートしていることは確かですが、それは低レベルにあるようです。つまり、レベルが低すぎて、より大きな問題に対処していません。アプリケーションの状態を構成する特定のもののセットをダンプし、ファイルが読み取られたときにそのレベルで何をロードしているかを知るために、特定の呼び出しを行う必要があります。そのレベルでは、JSON を使用するよりも実際に書きやすく、解釈しやすい独自の形式を発明できます。