問題タブ [shelve]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 関数で Aʟʟ グローバル変数にアクセスするには?
matlab
ロードおよび保存機能を模倣しようとしています。私はこのスレッドに従っています: Shelve Code gets KeyError
スマートです。ただし、そのコードを別のモジュールに記述し、そのモジュールをインポートしてその関数を呼び出そうとすると、グローバル変数にアクセスできません。
具体的には、私は書いてhappy.py
、内部に関数を持っています:
そして試してみると
それはセーブa
とb
.
これはglobal()
、モジュールの外側にオブジェクトを渡さないからですか? その時やりたいことはどうすればいいの?
python - Python の shelve モジュールが異なる拡張子のファイルを作成することがあるのはなぜですか?
shelve
の上でモジュールを使用する Python プログラムを実行していますpickle
。このプログラムを実行した後、1 つの出力ファイルa.data
が として得られることもありますが、3 つの出力ファイルがa.data.bak
、a.data.dir
およびとして得られることもありa.data.dat
ます。
何故ですか?
python - Python の shelve モジュールの最大サイズはありますか?
実際にはかなり小さい(< 1MB)特定のサイズを超える保留永続化ファイルを開こうとすると、この例外が発生しますが、正確な数がどこにあるのかわかりません。今、私は pickle が python のろくでなしの子のようなものであり、shelve が特に堅牢なソリューションとは考えられていないことを知っていますが、それはたまたま (理論的には) 私の問題を素晴らしく解決し、その理由を見つけることができませんでしたこの例外。
一貫して再現できますが、グーグルではあまり見つかりませんでした。これが再現するスクリプトです。
python - 棚:ピクルスできません: 属性ルックアップ builtins.method が失敗しました
shelve を使用してデータを保存しています。
周りを見回したところ、バインドされていないメソッドがこれを引き起こしている可能性があることがわかりましたが、コードで問題を見つけることができません。
問題は次の場所で発生します。
プレイヤーはクラスエンティティです:
これはクラス エンティティのコードです。
これを投稿する前に、pudb で最終的な確認を試みましたが、エラーも発生しています。
_
( pudbなしでコードを実行する場合は表示されません)
これは世界です:
これはクラス タイルです。
最後に、これは shelve を呼び出す完全な関数です。
それがすべての関連コードだと思います。
これらのエラーの原因は何ですか?
python - 棚付きの2つのキーを持つPython辞書
shelveを使って大きな辞書を収納したい。より具体的には、私が持っているのは、マトリックスのような辞書の辞書です。
キーの数は約 5.000 であるため、5.000x5.000 要素のマトリックスを 4Gb のメモリに格納することは不可能です。そのため、シェルブは良い解決策かもしれないと思いました。
それにもかかわらず、辞書の辞書を効率的に構築する方法に関するドキュメントは見つかりませんでした。
これまでのところ、shelve を使用して通常の辞書を含む辞書を作成しました。
それは機能しますが、シェルブを最大限に活用してそれを行うためのより良い方法があるはずです. 何か案は?
python - python load from shelve - 変数名を保持できますか?
Python で基本的なゲームを作成する方法を独学しています (テキスト ベース - pygame は使用しません)。(注:基本的なコア構造を最初に把握したかったので、実際には「ゲーム」の部分には到達していません。)
私はセーブ/ロードのシナリオをどのように実装するかを理解しようとしているところであり、プログラムのシングル実行を超えてゲームセッションを持続させることができます。私は少し検索を行いましたが、すべてが最良の解決策として酸洗いまたは棚上げを指しているようです.
私のテスト シナリオは、クラスの 1 つのインスタンスを保存して読み込むためのものです。具体的には、Characters() というクラスと、(テストのために) pc という変数に割り当てられたそのクラスの 1 つのインスタンスがあります。Character クラスのインスタンスには name という属性があり、最初は「DEFAULT」に設定されていますが、新しいゲームの初期セットアップ時にユーザー入力に基づいて更新されます。例:
私はまた、割り当てられた変数を使用してさまざまなインスタンスを参照する多数の関数を持っています (または持つ予定です)。たとえば、簡単な例として構成されたものは次のようになります。
PCインスタンスを(他の情報とともに)現在の情報(例:更新された名前)でパックする保存機能を用意する予定です。また、ユーザーが新しいゲームを開始する代わりに、保存したゲームをプレイできるようにするロード機能も用意します。私が読んだことから、負荷は次のように機能する可能性があります。
私の質問は、保留ロードがインスタンスに関連付けられた変数名を「記憶」し、その << pc = mysave["pc"] >> ステップを自動的に実行する方法はありますか? または、その変数名を文字列(キーなど)として保存し、その文字列を使用して正しい名前(pc)で変数を作成する方法はありますか?
多くのインスタンスを「保存」する必要があり、そのプロセスをループで自動化できますが、特定の変数名へのアンロードを自動化する方法がわかりません。それぞれを個別かつ明示的に再割り当てする必要がありますか? インスタンスを適切な変数名に割り当てる必要があります.bcには、変数名を使用して特定のインスタンスを参照するコア関数がたくさんあります(上記の例のように).
アイデア?これは可能ですか、それとも私が見ていないまったく別の解決策がありますか?
ありがとう!
〜肋骨