2012-11-26 2 views
17

私はcPickleを使用して、プログラムの実行ごとにデータセットを保存します。コードを実行せずにデータの概要を表示する必要があることがあるので、ファイルをダブルクリックするだけで簡単に内容を確認することができます。私はターミナルをロードし、毎回ファイルにpythonを指すことを避けようとしており、ちょうどprintスクリプトを実行しています。WindowsでPythonをロードせずにcPickleまたはPickleファイルの内容を表示する方法はありますか?

私はメモ帳++プラグインを探しましたが、何も見つかりませんでした。

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

注:私はpickleであるため、これを行うにはどのような方法があることを本当に疑いWindows 7の

+3

[ASCIIプロトコル](http://docs.python.org/2/library/pickle.html#data-stream-format)を使用して「pickle」することができます。これは、メモ帳から読み取ることができます(たとえあなたが複雑なオブジェクトを置く場合は特に気に入らない)。 – Bakuriu

答えて

9

を実行して、あなたはほとんど何でもでパックすることができます。 unpickling時には、オブジェクトがピクルされたときにロードされたモジュールなどをロードできる必要があります。言い換えれば、一般に、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拡張を書くことはできません。 Pythonの3.2 +/2.7 +用

+1

pickleについては考えがありませんが、プロトコルが出力に「環境」のすべての必要な情報を格納するのを止めるものは何もありません。この場合、それはかなり些細なことでしょう:追加のパラメータを持たない新しいスタイルのクラスを1つ保存しました。だからそれは可能ですが、それはかなりの余分な情報を保存することを意味するだけかもしれません。 – Voo

23

は、コマンドラインから漬物(の__repr__年代)を表示することができます。

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

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

+1

これは、私が(2017年に)この質問をGoogleで検索したときに私が探していた答えです。それは受け入れられた答えとしてマークされるべきです。 –

+1

非常に便利です! Python 2.7のピクルスでも動作しているようですが、少なくとも私がこれを必要とした単一のケースではそうです。 –

+0

@ Hans-MartinMosnerありがとう私は答えを更新しました。おそらくバックポートされたでしょう。 – jth

関連する問題