我已經創建了一個我的小python腳本。我在Linux上保存了pickle文件,然後在windows上使用它,然後在Linux上再次使用它,但現在該文件在Linux上不起作用,但它在Windows上完美工作。 是這樣的,python是coss平臺,但pickle文件不是。 有沒有解決這個問題的方法?是python跨平臺的pickle文件嗎?
回答
Python的泡菜是完全跨平臺的。
這可能是由於Windows和Linux之間的EOL(行結束)差異造成的。確保使用open()的「wb」和「rb」模式分別在寫入和閱讀時以二進制模式打開pickle文件。
注意:在不同版本的Python之間傳遞pickle可能會導致麻煩,因此請嘗試在兩個平臺上使用相同的版本。
'pickle' [保證是「向後兼容」](http://docs.python.org/2/library/pickle.html#relationship-to-other-python-modules)。我認爲這意味着更新的版本將會讀取舊版本的醬菜,但舊版本可能無法從新版本讀取醬菜。 – max 2012-12-28 18:12:34
您可以使用json
而不是pickle
。如果它可以保存你的數據,你就知道它是跨平臺的。
不是downvoting,但使用json的這種情況似乎有點尷尬。 – ChristopheD 2009-12-04 20:55:30
這真的取決於他正在保存的內容。如果它是所有的數字和字符串列表,JSON非常棒。如果是字典和類實例,不是那麼多。 – steveha 2009-12-05 00:08:06
我正在保存類實例 – vikithakar 2009-12-14 16:38:13
也許你不用二進制模式打開文件?參見this stackoverflow question
該pickle
模塊supports several different data formats。如果你指定一個特定的pickle格式而不是默認的(0),你可能會遇到跨平臺的二進制文件問題。你可以通過指定協議0來使用純ASCII的pickle文件。
Pickle應該是跨平臺的,有版本/協議問題(見http://docs.python.org/library/pickle.html#data-stream-format),但是一般來說如果你在你的windows上使用相同版本的python和unix框,它們應該可以互操作。
如果您使用泡菜作爲數據傳輸機制,你可能要考慮用於數據存儲的實現少特定的格式,如JSON,XML,CSV,YAML等
一個有趣的想法,嘗試一下是PyON(Python對象表示法)。根據我的測試,目前的版本似乎至少適用於簡單的情況。不過,郵件列表似乎存在一些分歧,不管該項目是否是一個好主意。
- 1. 是.git文件夾跨平臺嗎?
- 2. Float64Array是跨平臺嗎?
- 3. 跨平臺的Python可執行文件
- 4. 跨平臺QRC文件,可能嗎?
- 5. 跨平臺文件歸檔
- 6. 跨平臺文件壓縮
- 7. .winmd文件平臺是獨立的嗎?
- 8. 跨平臺Python通知庫
- 9. 跨平臺的zip文件創建
- 10. 查找python包含文件夾的跨平臺方法
- 11. Python:跨平臺代碼來下載有效的.zip文件
- 12. 跨平臺方式讀取Python中的Excel文件?
- 13. 跨平臺的/ dev/Python中的空
- 14. 跨平臺讀取xml文件
- 15. 跨平臺文件訪問跟蹤
- 16. 跨平臺文件同步工具
- 17. C++:獲取臨時文件,跨平臺
- 18. 跨平臺比較文件內容
- 19. Xamarin複製文件跨平臺
- 20. 是否有跨平臺的方式來打開Python中的文件瀏覽器?
- 21. 跨平臺移動文件上傳 - 可能嗎?
- 22. Python中的跨平臺音頻播放
- 23. 用於python的跨平臺usb模塊?
- 24. Python的os.rename「\」和「/」跨平臺問題
- 25. 有人知道Python 3.x的跨平臺Urwid like環境嗎?
- 26. 跨平臺事件通知
- 27. 跨平臺
- 28. 跨平臺
- 29. 跨平臺CSRF
- 30. 跨平臺C?
蟒蛇醃菜可能有刺。泡菜平臺問題潛在可預防。請提出可能的問題預防建議。 – aehiilrs 2009-12-04 23:48:34