有沒有任何方法檢查文件是否由pickle
創建?我只能捕獲由pickle.load
引發的異常,但沒有特定的「不是pickle文件」異常。如何測試一個文件是否已被pickle創建?
15
A
回答
8
Pickle文件沒有標題,所以沒有標準的方法來標識它們,但是沒有試圖解除其中的一個,並且看到在這樣做時是否引發了任何異常。
您可以通過在pickle
模塊中繼承Pickler()
和Unpickler()
類的子類來定義自己的增強型協議,該協議包含某種類型的標頭。然而這不能用快得多的cPickle
模塊來完成,因爲其中有工廠功能,不能被子類化[1]。
一個更靈活的方法是定義您自己的獨立類,它們使用相應的Pickler()
和Unpickler()
實例。
更新
所有泡菜文件的最後一個字節應該是pickle.STOP
操作碼,所以雖然沒有一個頭,有是實際上是一個很小的拖車這將是一個相對簡單的事情檢查。
根據您的具體使用情況,您也許能逃脫補充,隨着醃製的對象的代表性的東西,因爲過去的STOP
操作碼的任何數據更詳盡被忽略[2]。
-
[1] Python的2文件中
Footnote [2]。
[2]
pickle.loads()
的文檔,這也適用於
pickle.load()
,因爲它目前以後者的形式實施。
7
除了嘗試去除它並捕獲異常外,沒有其他方法可行。
相關問題
- 1. 如何測試GTK +對話框是否已創建?
- 2. 如何測試Flex控件是否被另一個遮擋?
- 3. 如何測試是否用rspec創建了一個對象?
- 4. 測試名稱是否已被使用
- 5. 測試JavaScript是否已被修改
- 6. 測試按鈕是否已被點擊
- 7. 測試UITableViewCell是否已被刪除
- 8. 測試連接是否已被調用
- 9. 如何測試一個UIView是否被另一個UIView觸碰?
- 10. 測試一個文件是否加載
- 11. php如何測試文件是否已完全上傳
- 12. 在clojure中,如何測試符號是否已被定義?
- 13. 如何測試UIControlEvents是否已被觸發
- 14. 如何測試一個表是否已經存在?
- 15. 如何測試創建的.class文件?
- 16. 創建一個簡單的時間戳並測試它是否已過期
- 17. 如何創建一個UIPrintPaper測試UIPrintInteractionControllerDelegate
- 18. 檢測插件是否已被應用
- 19. 如何測試xml文件是否被調用?
- 20. 如何在rspec中測試文件是否被刪除?
- 21. 如何測試一個文件是否在Java中打開?
- 22. WebOS:如何測試一個文件是否存在?
- 23. 如何測試一個文件是否以.NET完全複製
- 24. boost :: mutex /如何測試一個互斥鎖是否被鎖定
- 25. 如何測試一個對象是否在Delphi中被釋放
- 26. 如何測試塊是否被調用
- 27. 如何測試window.print()是否被覆蓋?
- 28. 如何測試div是否被阻止
- 29. 如何測試一個文件是否是一個.NET程序集在C#
- 30. 檢查是否一些對象已經被測試
檢查醋和蒔蘿的痕跡 –
您是否擔心文件是否已經*創建*當您使用'pickle.dump'時,或者當您使用'pickle.load'時是否存在文件?無論哪種情況,當你打開輸出或輸入的文件句柄時,錯誤都會發生,而不是在實際的'pickle'行中。 –
我並不擔心文件是否存在,而是關於是否存在的文件是由'pickle'創建的。 – Erik