2010-10-07 148 views
5

我想知道對象是否使用的CPython的cPickle的是通過使用IronPython的的cPickle的可讀序列;有問題的對象不需要Cpython和IronPython包含的內置模塊之外的任何模塊。謝謝!兼容性

回答

2

如果您使用默認協議(0),它是基於文本的,那麼應該的工作。我不確定如果你使用更高的協議會發生什麼。這很容易測試這個...

+1

謝謝您的回答。你強調這很有趣「應該」,因爲現在我確實使用的是默認的協議在雙方的CPython和IronPython的cPickle的,而且我得到「意外的EOF」的錯誤。你會不會知道爲什麼會出現這種情況?我的文件分別以'rb'和'wb'模式讀取和寫入。 – JustOnePixel 2010-10-07 21:41:01

+2

那應該肯定是真的模塊bug。有一些測試包括從一個版本或另一個版本在工作時間工作的泡菜。我最近寫了一些代碼,它使用CPython的pickle輸出結合w/IronPython的unpickler,並沒有問題。唯一的區別是IronPython可能會輸出unicode字符串,CPython會輸出ASCII字符串。但是這些應用程序仍然會在實現過程中醃製/取消。你能否將問題減少到較小的樣本? – 2010-10-07 23:54:23

0

它將工作,因爲當負載期間你unpickle的對象(),它會使用你現在已經定義,不回任何類的現行定義時的對象進行酸洗。

IronPython的是簡單地用Python在C#實現爲使得一切發射IL的標準庫。無論是CPython的和IronPython的泡菜模塊具有相同的功能,除了一個是用C語言實現,另一個在C#。