2009-11-17 1 views
2

У меня есть простой класс, который я травля (сбрасываю) в файл. На OS X это отлично работает, а на Windows это отлично работает.Не удалось распечатать файл на Mac, который был маринован на Windows

Однако в то время как на окнах я могу загрузить/распечатать объект в порядке - когда окна затем распиливают этот файл и сохраняют его на диск, он становится нечитаемым в OS X (хотя в Windows он все еще ведет себя как обычно).

Ошибка, которую я возвращаю из OS X, заключается в том, что она не может импортировать требуемый класс.

Я смущен, так как все это прекрасно работает, пока я ничего не расчёсываю в окнах! (Даже тогда он все еще отлично работает в Windows)

Я слышал, что это могут быть концы строк, мои другие мысли, возможно, связаны с типом кодирования, используемым в разных операционных системах? Но я действительно не знаю, что пытаться полностью диагностировать и/или решить эту проблему, поэтому любая помощь будет оценена!

ответ

5

Солить новейшую версию протокола и открывать файлы в двоичном режиме во всех случаях. Это должно решить проблему.

+0

Спасибо, это сработало отлично – Lee

3

Это будет конец строки - если вы используете открытый файл ASCII pickle в режиме ascii 'r' или 'w' - если вы используете двоичный рассол, открытый в двоичном режиме 'rb' 'wb'. Из документа:

По умолчанию протокол равен 0, что соответствует обратному совместимости. (Протокол 0 является только протоколом , который может быть записан в файл, открытый в текстовом режиме , и считать его с успехом. При использовании протокола выше , чем 0, убедитесь, что файл открыт в двоичном режиме, как при травировке и рассыпании .)

Смежные вопросы