問題タブ [pickle]

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.

0 投票する
1 に答える
582 参照

python - Python: `copyreg` を使用して、既にレデューサーを持つ型のレデューサーを定義する

(私は Python 3 で作業しているので、ソリューションは Python 3 で動作する必要があることに注意してください。)

copyregこのモジュールを使用して、関数をピクルする方法を Python に教えたいと思います。私がそれをしようとしたとき、_Picklerオブジェクトは関数を使用して関数をピクルしようとしましたsave_global。(これはバインドされていないメソッドでは機能しません。それがこれを行う動機です。)

を調べる前に、ピクルしたいオブジェクトのタイプを_Pickler最初に独自に調べようとするようです。これが意図的なものかどうかはわかりません。dispatchcopyreg.dispatch_table

私が提供するレデューサーで関数をピクルするように Python に指示する方法はありますか?

0 投票する
3 に答える
8200 参照

python - Pythonでこのunicode/cPickleエラーを修正するにはどうすればよいですか?

0 投票する
2 に答える
4077 参照

python - GAE: ValueError: 安全でない文字列ピクル

Google App Engine からオブジェクトを unpickle するのに問題があります。Windows 7 を実行しています。手順は次のとおりです。

  1. pickle.dumps([[('CS', 2110), ('CS', 3300), ('CS', 3140)]])フィールドの 1 つが、または同様の引数を持つ CSV を作成します。

CSV は次のようになります。

(はい、それらは\nによって生成されpickle.dumps()ます)

  1. このファイルを Google App Engine devserver にロードします。

appcfg.py upload_data --config_file="DataLoader.py" --filename="pre_req_data.csv" --kind=Course --url=http://localhost:8083/remote_api "appdir"

コースモデル:

DataLoader.py :

  1. データが正常にロードされたことを確認します。

データ ストア個々のエンティティ

  1. 解凍してみてください:

    クラス MainHandler (webapp.RequestHandler):

    /li>
  2. エラーを観察します:

    トレースバック (最新の呼び出しが最後):

    ファイル「C:\Program Files\Google\google_appengine\google\appengine\ext\webapp__init__.py」、511 行目、call handler.get(*groups)内

    ファイル "main.py"、30 行目、get self.writeOut("%s => %s" % (c.raw_pre_reqs, c.getPreReqs())) 内

    ファイル "src\Models.py"、17 行目、getPreReqs pickle.loads(str(self.raw_pre_reqs)) 内

    ファイル "C:\Python26\lib\pickle.py"、1374 行目、ロードで Unpickler(file).load() を返す

    ファイル「C:\Python26\lib\pickle.py」、858 行目、ロード ディスパッチキー

    ファイル "C:\Python26\lib\pickle.py"、966 行目、load_string で ValueError、"insecure string pickle" を発生させる

    ValueError: 安全でない文字列ピクル

ここで何が間違っていますか?

0 投票する
4 に答える
1253 参照

python - 決定論的キーのシリアライゼーション

ディスクに永続化されるマッピング クラスを作成しています。現在、strキーのみを許可していますが、さらにいくつかのタイプを使用できればいいと思います: できればハッシュ可能なもの (つまり、組み込みと同じ要件dict) まで使用できますが、より合理的には、string、unicode、int、およびを受け入れます。これらのタイプのタプル。

そのために、決定論的なシリアル化スキームを導出したいと思います。

オプション 1 - キーの酸洗

pickle最初に考えたのは、ピクル (または cPickle) モジュールを使用してキーをシリアル化することでしたが、とからの出力がcPickle互いに一致しないことに気付きました。

いくつかのタイプのセットに対して決定論的である実装/プロトコルの組み合わせはpickleありますか (たとえばcPickle、プロトコル 0 でのみ使用できます)?

オプション 2 - Repr と ast.literal_eval

もう 1 つのオプションは、reprダンプとast.literal_evalロードに使用することです。特定のキーがこのプロセスに耐えられるかどうかを判断する関数を作成しました (許可される型については保守的です)。

このメソッドの問題は、reprここで許可した型に対してそれ自体が決定論的であるかどうかです。str/unicode リテラルの変更により、これは 2/3 バージョンの壁を乗り越えられないと思います。2**32 - 1 < x < 2**64これは、32 ビット プラットフォームと 64 ビット プラットフォームの間でジャンプする整数に対しても機能しません。他の条件はありますか (つまり、同じインタープリターで異なる条件の下で文字列が異なる方法でシリアル化されますか)? 編集:これが崩壊する条件を理解しようとしているだけであり、必ずしもそれらを克服するわけではありません。

オプション 3: カスタム表現

やり過ぎの可能性が高いもう1つのオプションは、repr私が知っている(または問題であると思われる) repr のものを平らにする独自のものを書くことです。ここに例を書きました: http://gist.github.com/423945

(これがすべて惨めに失敗した場合、キーと値の両方のピクルとともにキーのハッシュを保存し、一致するハッシュを持つ行を反復して、予想されるキーにアンピクルするものを探しますが、それは本当に複雑です編集: ビルトインはプラットフォーム間で決定論的ではないことが判明しました. スクラッチ.)hash

洞察はありますか?

0 投票する
2 に答える
419 参照

python - 動的に作成されたモデルでのDjangoのmemcacheAPIの使用

だから私は動的モデルを作成する関数を持っています。私はこれをAuditTrailと非常によく似た方法で実現します(django wikiを参照)。

コードのサンプルはここにあります:

https://gist.github.com/0212845ae00891efe555

動的に生成されたクラスをピクルス可能にする方法はありますか?理想的には、クレイジーなモンキーパッチ/ハックではないものですか?

0 投票する
3 に答える
304 参照

python - Pythonで大きな「データベースのような」クラスを保存する方法

私は合理的な大きなデータベースでプロジェクトを行っています。これは適切な DB ファイルではありませんが、次のような形式のクラスです DataBase.Nodes.Data=[[] for i in range(1,1000)]。最初の質問-私が効率的にやっている方法ですか、それとも実際に使用したことのないSQLまたは他の「適切な」DBを使用する方が良いですか. DataBase classそして主な質問 -すべてのレコードを保存してから、別のセッションで Python を使用して再度開きたいと思います。それは可能ですか、どのツールを使用すればよいですか?cPickle - 文字列のみのようですが、他にはありますか?

matlab には、ワークスペースの保存という名前の非常に便利な機能があります。すべての変数をファイルに保存し、別のセッションで開くことができます。これは Python でさまざまに役立ちます。

0 投票する
1 に答える
1058 参照

python - ファイルにデータを保存する cPickle クラス

私はPythonで大きなクラスを持っています。それは「データベースのような」クラスです。ファイルに保存したい - すべてのデータを含む。

これは入力です (問題を示す例、スクリプト データベースでは 10000 レコードのようです):

そして、それは私が得るファイルです:

データはなく、定義だけです。どうすればそれを克服できますか。私のデータをクラスとして保存するのは良い考えではないでしょうか?

0 投票する
3 に答える
9405 参照

python - Pythonで属性がピクルスになるのを防ぐ方法

gnosis.xml.pickleを使用して、自分のクラスのオブジェクトをxmlに変換しています。オブジェクトは次のように初期化されます。

しかし、オブジェクトを文字列にダンプすると、ピッカーがピクルできないタイプ(thread.lock)に遭遇したことを示す例外が発生します。

ピッカーがその属性をピクルスにしようとしないことを知ることができるように、ロガー属性に「タグ付け」する方法はありますか?

0 投票する
5 に答える
12331 参照

python - cPickle ImportError: multiarray という名前のモジュールがありません

cPickle を使用してデータベースをファイルに保存しています。コードは次のようになります。

そして、それはうまくいきます。私のデータベース行のほとんどは、リスト、ベクトルのような、または配列のようなデータセットのリストです。

しかし、データを入力すると、エラーが発生します。

エラーは次のとおりです(両方の場合):

何か案は?

PS。今、私は問題を部分的に解決しました:/配列のフォーマットを変更する必要がありました。エラーを追跡しようとしましたが、できませんでした。エラーの原因となっている変数は次のとおりです (long :) ) :

cPickle または pickle ではロードできません。しかし、コンソールで手動で行うと、同じファイル構造( [[ ]] とすべての形式がまったく同じ、値も e+00 形式)で正常に動作します??????????? なんてこったい?とにかく、データ形式を変更することで問題を解決しました:/

0 投票する
1 に答える
8305 参照

python - zipfile から pickle ファイルをロードする

何らかの理由で、cPickle.load を ZipFile.open() によって返されるファイル タイプ オブジェクトで動作させることができません。ZipFile.open() によって返されたファイル タイプ オブジェクトに対して read() を呼び出すと、cPickle.loads を使用できます。

例 ....

注: pickle ファイルだけを圧縮するのではなく、他の種類の多くのファイルを圧縮します。これはほんの一例です。