2012-11-26 12 views
17

Tôi sử dụng cPickle để lưu tập dữ liệu từ mỗi lần chạy chương trình. Vì đôi khi tôi cần xem đường viền của dữ liệu mà không cần chạy mã, tôi muốn một cách dễ dàng để xem nhanh nội dung bằng cách chỉ cần nhấp đúp vào tệp. Tôi đang cố gắng tránh phải tải một thiết bị đầu cuối và chỉ python vào một tập tin mỗi lần, chỉ để chạy một số tập lệnh print.Có cách nào để xem nội dung tệp cPickle hoặc Pickle mà không cần tải Python trong Windows không?

Tôi đã tìm kiếm plugin Notepad ++ nhưng không thể tìm thấy bất kỳ thứ gì.

Có cách nào dễ dàng để thực hiện việc này không? Có ai có bất cứ đề nghị?

Lưu ý: Tôi chạy Windows 7.

+3

Bạn có thể 'pickle' bằng cách sử dụng [giao thức ASCII] (http://docs.python.org/2/library/pickle.html#data-stream-format), có thể đọc được từ notepad (mặc dù nó wont nhìn đẹp, đặc biệt là nếu bạn đặt có đối tượng phức tạp). – Bakuriu

Trả lời

9

tôi REALLY nghi ngờ rằng có cách nào để làm điều này kể từ với pickle, bạn có thể đóng gói trong khá nhiều bất cứ điều gì. Khi giải nén, bạn cần có khả năng tải các mô-đun v.v. đã được tải khi đối tượng được chọn. Nói cách khác, nói chung, để có thể unpickle một cái gì đó, python cần để có thể tái tạo "môi trường" của chương trình (hoặc ít nhất là một xấp xỉ gần đủ) - nạp các mô-đun, các lớp trong không gian tên chung, vv. .. Nói chung, điều này là không thể nếu không có sự trợ giúp từ người dùng. Xem xét:

import pickle 
class Foo(object): pass 

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

Bây giờ nếu bạn cố gắng khôi phục này trong một kịch bản riêng biệt, trăn không có cách nào để biết những gì một Foo trông giống như và vì vậy nó không thể khôi phục các đối tượng (trừ khi bạn xác định một đối tượng phù hợp Foo trong kịch bản đó). Đây không thực sự là một quá trình có thể được thực hiện mà không có sự can thiệp của con người.

Tất nhiên, một trường hợp đặc biệt hữu ích cho việc bạn chỉ cần chọn đối tượng dựng sẵn và mọi thứ từ thư viện chuẩn có thể được thử ... nhưng tôi không nghĩ bạn có thể viết một tiện ích mở rộng chung.

+1

Không có ý tưởng về dưa chua, nhưng không có gì ngăn chặn một giao thức lưu trữ tất cả các thông tin cần thiết của "môi trường" trong đầu ra của nó là tốt. Trong trường hợp này sẽ khá tầm thường: Chúng tôi đã lưu trữ một lớp kiểu mới không có tham số bổ sung. Vì vậy, nó chắc chắn là có thể làm như vậy - nó chỉ có thể có nghĩa là lưu trữ khá nhiều thông tin bổ sung. – Voo

23

Đối với Python 3.2 +/2,7 + bạn có thể xem (__repr__ 's của) dưa chua từ dòng lệnh:

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

Nó sẽ được dễ dàng tích hợp này vào trong menu của Windows.

+1

Đây chính là câu trả lời tôi đang tìm kiếm khi tôi googled câu hỏi này (năm 2017). Nó phải được đánh dấu là câu trả lời được chấp nhận. –

+1

Rất hữu ích! Dường như nó cũng hoạt động với các đĩa đơn Python 2.7, ít nhất là trong trường hợp duy nhất tôi cần đến nó. –

+0

@ Hans-MartinMosner cảm ơn tôi đã cập nhật câu trả lời. Có lẽ nó đã được backported. – jth