[解決済み] pickleファイルに複数のオブジェクトを保存・読み込みできますか?
2023-05-03 06:42:23
質問
ゲーム内でプレイヤーにサービスを提供し、プレイヤーを作成したりするクラスがあります。
私は後でそれを使用するために、これらのプレーヤーオブジェクトをファイルに保存する必要があります。 pickle モジュールを試しましたが、複数のオブジェクトを保存して、再度読み込む方法がわかりません。そのような方法はありますか、それともリストのような他のクラスを使用して、リストに私のオブジェクトを保存してロードするべきですか?
より良い方法はありますか?
どのように解決するのですか?
リスト、タプル、ディクトを使うのが圧倒的に一般的な方法です。
import pickle
PIK = "pickle.dat"
data = ["A", "b", "C", "d"]
with open(PIK, "wb") as f:
pickle.dump(data, f)
with open(PIK, "rb") as f:
print pickle.load(f)
これで印刷されます。
['A', 'b', 'C', 'd']
しかし、pickleファイル は には任意の数のピクルスが含まれています。 以下は同じ出力を生成するコードです。 しかし、書くのも理解するのも難しくなっていることに注意してください。
with open(PIK, "wb") as f:
pickle.dump(len(data), f)
for value in data:
pickle.dump(value, f)
data2 = []
with open(PIK, "rb") as f:
for _ in range(pickle.load(f)):
data2.append(pickle.load(f))
print data2
このようにすると、書き出したファイルにいくつのpickleがあるのかを知る責任が生じます。 上のコードでは、リストオブジェクトの数を最初にピクルス化することでそれを実現しています。
関連
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み] JavaScriptでクラスを定義するために使用できるテクニックと、そのトレードオフとは?
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】オブジェクトの保存 (データ永続化)
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Python Empty Generator 関数
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] pandas DataFrameへのメタ情報/メタデータの追加