繁体   English   中英

有没有办法在 Windows 中不加载 Python 的情况下查看 cPickle 或 Pickle 文件内容?

[英]Is there a way to view cPickle or Pickle file contents without loading Python in Windows?

我使用 cPickle 来保存程序每次运行的数据集。 由于有时我需要在不运行代码的情况下查看数据的轮廓,因此我想要一种只需双击文件即可快速查看内容的简单方法。 我试图避免每次都加载终端并将 python 指向一个文件,只是为了运行一些print脚本。

我寻找 Notepad++ 插件但找不到任何东西。

有什么简单的方法可以做到这一点吗? 有没有人有什么建议?

注意:我运行的是 Windows 7。

对于 Python 3.2+/2.7+,您可以__repr__查看( __repr__的)泡菜:

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

将其集成到 Windows shell 中应该很容易。

真的怀疑有什么办法可以做到这一点,因为使用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 扩展。

您还可以在终端上创建别名,例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM