簡體   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