Có cách nào kiểm tra xem tệp đã được tạo bởi pickle
không? Tôi chỉ có thể bắt ngoại lệ được ném bởi pickle.load
nhưng không có ngoại lệ cụ thể "không phải là tệp dưa".Làm thế nào để kiểm tra xem một tập tin đã được tạo ra bởi dưa chua?
Trả lời
Tệp yêu cầu không có tiêu đề, vì vậy không có cách nào tiêu chuẩn để xác định chúng thiếu cố gắng giải thích một và xem có bất kỳ ngoại lệ nào được nêu ra trong khi làm như vậy hay không.
Bạn có thể xác định giao thức nâng cao của riêng mình bao gồm một số loại tiêu đề bằng cách phân lớp các lớp Pickler()
và Unpickler()
trong mô-đun pickle
. Tuy nhiên, điều này không thể thực hiện được với mô-đun cPickle
nhanh hơn nhiều vì có các chức năng của nhà máy trong đó không thể được phân loại là [1].
Cách tiếp cận linh hoạt hơn sẽ xác định các lớp độc lập của riêng bạn đã sử dụng các trường hợp Pickler()
và Unpickler()
tương ứng từ một trong các mô-đun này trong quá trình triển khai.
Cập nhật
Byte cuối cùng của tất cả các file dưa nên là pickle.STOP
opcode, như vậy trong khi không có một tiêu đề, có là hiệu quả một trailer rất tối thiểu đó sẽ là một điều tương đối đơn giản để kiểm tra.
Tùy thuộc vào mức sử dụng chính xác của bạn, bạn có thể thoát khỏi việc bổ sung thêm thông tin chi tiết hơn vì bất kỳ dữ liệu nào qua mã vạch STOP
trong biểu diễn của đối tượng đã được bỏ qua [2].
-
[1]
Footnote [2] trong tài liệu Python 2.
[2] Tài liệu cho
pickle.loads()
, cũng áp dụng cho
pickle.load()
vì nó hiện đang được triển khai dưới dạng thứ hai.
Không có cách nào chắc chắn hơn là cố gắng giải thích nó và bắt ngoại lệ.
- 1. Làm thế nào để kiểm tra xem một tập tin đã được mở bởi một tiến trình khác trong C?
- 2. Làm thế nào để kiểm tra bytecode java được tạo ra bởi Clojure từ repl?
- 3. Làm thế nào để kiểm tra rằng diễn viên Akka đã được tạo ra trong Scala
- 4. Làm thế nào để kiểm tra xem System.IO.File.Delete xóa một tập tin thành công
- 5. Làm thế nào để kiểm tra xem một is_open tập tin và open_status trong python
- 6. Kiểm tra xem một tập tin là một hình ảnh
- 7. dưa chuột + Capybara kiểm tra để đảm bảo một cửa sổ mới được mở ra
- 8. LÀM THẾ NÀO ĐỂ kiểm tra xem một bên ngoài (cross-domain) tập tin CSS được nạp sử dụng Javascript
- 9. Làm thế nào để tạo ra tập tin chơi heroku?
- 10. Làm thế nào để kiểm tra xem một đối tượng đã được sửa đổi
- 11. Làm thế nào để kiểm tra xem tên tập tin chứa chuỗi trong C#
- 12. Tại sao kiểm tra xem một tập tin tồn tại trong hadoop gây ra một NullPointerException?
- 13. Làm cách nào để kiểm tra xem biến đã được khởi tạo chưa
- 14. AppleScript: Làm thế nào để kiểm tra xem một cái gì đó là một thư mục hoặc một tập tin
- 15. Làm thế nào để gửi pdf được tạo ra bởi TCPDF như Swiftmailer tập tin đính kèm
- 16. Làm thế nào để kiểm tra xem hình ảnh đã được tải bằng Javascript chưa?
- 17. Android Làm thế nào để kiểm tra số lượng tập tin trong một thư mục
- 18. Làm thế nào để kiểm tra xem phiên đường ray đã được tải chưa?
- 19. Làm thế nào tôi có thể deserialize dưa chua python trong C#?
- 20. Làm cách nào để kiểm tra xem Trình tạo sự kiện JavaScript đã được đặt?
- 21. Làm cách nào để kiểm tra xem CGPoint đã được khởi tạo chưa?
- 22. Làm thế nào để kiểm tra xem đối tượng "isEmpty()" nếu Object.prototype đã được sửa đổi?
- 23. làm thế nào để kiểm tra các loại tập tin được tải lên là pdf
- 24. Làm thế nào để kiểm tra xem một hình ảnh đã được tìm thấy trên một trang web?
- 25. Làm thế nào để VS2010 nhận ra các mstest của tôi được tạo ra bởi SpecFlow?
- 26. Làm thế nào để bạn kiểm tra khi một tập tin được thực hiện được sao chép bằng Python?
- 27. Làm thế nào để mô phỏng/sơ khai một mô hình trong kiểm tra Dưa chuột
- 28. Làm cách nào để kiểm tra xem một sự kiện đã được đăng ký, trong .NET?
- 29. Làm thế nào để kiểm tra xem một ví dụ twisted.internet.protocol đã bị ngắt kết nối
- 30. Làm thế nào để kiểm tra xem tai nghe đã được cắm vào hay chưa?
Kiểm tra dấu vết của dấm và thì là –
Bạn có lo lắng về việc liệu tệp đã được tạo * khi bạn vừa sử dụng 'pickle.dump' hay liệu tệp có tồn tại khi bạn sử dụng' pickle.load' không? Trong cả hai trường hợp, lỗi sẽ xảy ra khi bạn mở bộ xử lý tệp cho đầu ra hoặc đầu vào, không phải trong dòng 'pickle' thực tế. –
Tôi không lo lắng về việc liệu tệp có tồn tại hay không nhưng về việc liệu một tệp tồn tại đã được tạo bởi 'pickle' hay chưa. – Erik