回答
ピクルスは、オブジェクトの直列化であるので、あなたは自分のオブジェクト全体をダンプすることができるはずです。 wb
のb
はバイナリです。あなたは全体のオブジェクトを持つことになり、それをバックロードするとき次に
data_file = open_file("save.dat","wb")
for i in enemyList:
pickle.dump(i, data_file)
:これは、オブジェクトがバイナリで表現する方法を知っている必要はありませんので、あなたはちょうどそうのようにそれをダンプすることができます。
それを開くには:
with open('save.dat', 'rb') as fp:
i = pickle.load(fp)
を私が前に使用漬物をやりなさい、それはすべてのバイナリがあるので、あなたはそれであれば、オブジェクトあなたのenemyListをダンプすることができるはずです。
data_file = open_file("save.dat","wb")
pickle.dump(enemyList, data_file)
with open('save.dat', 'rb') as fp:
enemyList = pickle.load(fp)
追加の州を除外/含む
Pickleは__getstate__
と__setstate__
の方法を使用して状態を変更します。シリアル化されたデータを読み書きする。非直列化データを省略したい場合は、これらのメソッドをオーバーライドする必要があります。ここではそうすることであなたを助けるためにドキュメントがある:
Pickle State
検討
シリアライズ(およびそのためのPythonのピクルス)は、独自のファイル形式を作成する代わりとして見られています。多くの場合、データ型によっては簡単になることがあります。オブジェクト階層を管理していない場合は、継承したオブジェクトを作成してすべてのデータを制御することはできません。場合によっては、独自のファイル形式を作成するほうが簡単です。
私の敵リストにはその変数の1つとして格納されている画像があるため、「TypeError:Surfaceオブジェクトをpickleできません。私はこれをどのように回避できるかわかりません。 – Bagel
シリアル化できないデータで問題を解決する方法を追加しました。 –