read loads how extension example cpickle python pickle

python - how - pickle.loads example



¿Hay alguna forma de ver el contenido de los archivos cPickle o Pickle sin cargar Python en Windows? (2)

Uso cPickle para guardar conjuntos de datos de cada ejecución de un programa. Como a veces necesito ver el esquema de los datos sin ejecutar el código, me gustaría una manera fácil de ver rápidamente el contenido con solo hacer doble clic en el archivo. Estoy tratando de evitar tener que cargar un terminal y apuntar python a un archivo cada vez, solo para ejecutar un script de print .

Busqué los complementos de Notepad ++ pero no pude encontrar nada.

¿Hay alguna manera fácil de hacer esto? ¿Alguien tiene alguna sugerencia?

Nota: corro Windows 7.


Para Python 3.2 + / 2.7 + puede ver ( __repr__ ''s of) desde la línea de comandos:

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

Debería ser fácil integrar esto en el shell de Windows.


Realmente dudo que haya alguna forma de hacer esto, ya que con pickle , puedes empacar casi cualquier cosa. Al descomprimir, debe poder cargar los módulos, etc. que se cargaron cuando el objeto fue decapado. En otras palabras, en general, para poder unpickle algo, Python debe poder reproducir el "entorno" del programa (o al menos una aproximación lo suficientemente cercana): módulos cargados, clases en el espacio de nombres global, etc. .. En general, esto no es posible sin la ayuda del usuario. Considerar:

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

Ahora, si intenta restaurar esto en una secuencia de comandos separada, Python no tiene forma de saber qué aspecto tiene un Foo y, por lo tanto, no puede restaurar el objeto (a menos que defina un objeto Foo adecuado en esa secuencia de comandos). Este no es realmente un proceso que se puede hacer sin una intervención humana.

Por supuesto, es posible que se pueda intentar un caso especial que podría ser útil, pero en el que simplemente está decapando objetos incorporados y cosas de la biblioteca estándar ... pero no creo que pueda escribir una extensión de descontaminación general.