Unix環境で仮想マシン用のAPIを開発しています。仮想マシンに関するいくつかの情報をテーブルに保存する必要があります。
現在、私は仮想マシンオブジェクトのPython辞書を使用しており、それをピクルスに保存しています。
コマンドラインAPIにデータを保存する他の最良の方法が何であるかを知りたいです。どんな提案でも役に立ちます。
答え1
他の人が使用するアプリケーションでは、信頼できないソースからピクルスされたデータのロードを保存しないため、ピクルスを使用しないでください(またはデータの書き込みと読み取りの間でディスクのピクルスを変更できないことを100%確信する必要があります。 )。
ユーザーがデータを変更する必要がある場合は、以下を使用する必要があります。YAML。 Pythonの実装は次のように可能です。rummel.yaml(免責事項:私はYAML 1.2パーサー/ダンパーの作成者です。)
代わりにJSONそしてより多くのXML操作。
これらすべての操作には、内部型と保存形式(辞書/マップ、リスト、基本型(整数、文字列、ブール値))でサポートされている型間変換が必要です。
YAMLは、Pythonデータのピクリングと同じセキュリティ上の問題を持つカスタムタイプもサポートしていますが、少なくともピクルスではサポートされていない安全なロードを可能にします。 YAMLは、ピクルスのように明示的なユーザータイプを使用してソースレイアウトを変更(モジュールの名前変更、クラスの移動)後にデータをロードするのに問題がありません。