web-dev-qa-db-ja.com

WindowsでPythonをロードせずにcPickleまたはPickleファイルの内容を表示する方法はありますか?

プログラムの実行ごとにcPickleを使用してデータセットを保存します。コードを実行せずにデータの概要を確認する必要がある場合があるので、ファイルをダブルクリックするだけでコンテンツをすばやく簡単に表示する方法が必要です。ターミナルをロードしてpython=を毎回ファイルにポイントする必要がないようにしています。printスクリプトを実行するだけです。

Notepad ++プラグインを探しましたが、何も見つかりませんでした。

これを行う簡単な方法はありますか?誰か提案はありますか?

注:私はWindows 7を実行しています。

27
TimY

Python 3.2 +/2.7 +の場合、(__repr__ 's of)コマンドラインからのピクル:

$ python -c "import pickle; pickle.dump({'hello': 'world'}, open('obj.dat', 'wb'))"
$ python -mpickle obj.dat
{'hello': 'world'}

これをWindowsシェルに統合するのは簡単です。

40
jth

I [〜#〜] really [〜#〜]pickleを使用すると、ほとんど何でもパックできるため、これを行う方法はないかと疑います。アンピクルするとき、オブジェクトがピクルされたときにロードされたモジュールなどをロードできる必要があります。言い換えると、一般に、何かをunpickleできるようにするには、pythonがプログラムの「環境」を再現できる必要があります(または少なくとも十分に近い近似) )-ロードされたモジュール、グローバル名前空間のクラスなど...一般的に、これはユーザーの助けなしでは不可能です。

import pickle
class Foo(object): pass

a = Foo()
with open('data.pickle','wb') as f:
    pickle.dump(a,f)

これを別のスクリプトで復元しようとすると、pythonはFooがどのように見えるかを知る方法がないため、オブジェクトを復元できません(定義しない限り)そのスクリプト内の適切なFooオブジェクト)これは実際には、人間の介入なしに実行できるプロセスではありません。

もちろん、組み込みオブジェクトと標準ライブラリからのものをピクルするだけの間違いなく便利な特別なケースは試みられるかもしれませんが、一般的なunpickler拡張機能を書くことはできないと思います。

10
mgilson

ターミナルでエイリアスを作成することもできます。例:

alias pvw="python -mpickle "

私の場合 :

pvw obj.dat                                   
         ID    A_ID   B_ID   PAST_ID
    0    20    1008   4771     425  
    1    20    2000   4771     425  
    2    20    2015   4771     425
0
Pyxtraker