私は、オブジェクトのインベントリを作成するPython 3.5プログラムを持っています。 Trampoline
(色、サイズ、春など)のクラスを作成しました。私は常にクラスの新しいインスタンスを作成し、次にそれらの辞書を保存します。辞書は次のようになります。オブジェクトの辞書を保存するには?
my_dict = {name: instance} and the types are like so {"string": "object"}
私の問題は、私は私がプログラムを閉じ前回中断したところ私が開始できるように、このインベントリリストを保存する方法を知りたいということです。
私はpickle
を使用したくないのですが、私は今後より重要なバージョンでこれを行うための安全な方法を学んでいるからです。
私はsqlite3
を使用することを考えました。これを簡単に行う方法についてのヒントがあれば分かります。
私の好みの解決策は、json
モジュールを使用してそれを行う方法を述べます。私はそれを試してみましたが、私が得たエラー:
__main__.Trampoline object at 0x00032432... is not JSON serializable
編集:編集の
out_file = open(input("What do you want to save it as? "), "w")
json.dump(my_dict, out_file, indent=4)
out_file.close()
終了:以下
私はエラーを得たときに私が使用したコードがあります
私はかなりの量の研究を行っており、これらの多くにも問題があることがわかりました。オプションを保存することができるのはです。オブジェクトは 'ファイルを保存'していますが、これを回避するには、作成したオブジェクトなどの辞書を使用することです。これを明確にする情報も素晴らしいでしょう!
jsonを使用するには、独自のjsonシリアライザ(ハードではない)を作成するか、json以外のオブジェクトを最初に文字列にする必要があります。たとえば、datetimeオブジェクトをどのくらい正確に保存したいのですか? – cmd
わかりました。私は研究しているときに何かを見ていましたが、あまり理解していませんでした。最初に文字列にすると、プログラムを再起動したときでも同じ機能を果たしますか、何らかの形でオブジェクトに変換しますか?また、まだdatetimeを使用する予定はありません。おそらく近い将来です。 – AmericanMade
'https:// docs.python.org/2.7/library/json.html#encoders-and-decoders' – cmd