2013-03-30 27 views
14

Đây là cách mã làpickle.load() nâng EOFError trong Windows

with open(pickle_f, 'r') as fhand: 
    obj = pickle.load(fhand) 

này hoạt động tốt trên các hệ thống Linux nhưng không phải trên Windows. Hiển thị EOFError của nó. Tôi phải sử dụng chế độ rb để làm cho nó hoạt động trên Windows .. hiện tại tính năng này không hoạt động trên Linux.

Tại sao điều này xảy ra và cách khắc phục?

+0

Khi bạn tạo đối tượng dưa, bạn đã tạo hệ điều hành nào trên OS? Linux hoặc Windows? Tôi không nghĩ rằng bạn có thể tạo ra một đối tượng dưa trên một hệ thống và tải nó từ – Rush

+0

@Rush mã ban đầu được viết trên Linux .. Tôi (dev mới) làm việc trong cửa sổ ... nhưng kể từ khi một dự án Django, tôi tạo ra tất cả mọi thứ ngay trên hệ thống của tôi một lần nữa .. – Surya

+0

@Rush, chắc chắn bạn có thể. miễn là bạn mở tệp ở chế độ nhị phân ở cả hai đầu, để tránh tính không tương thích của dòng mới. – shx2

Trả lời

25

Luôn sử dụng chế độ b khi đọc và viết dưa chua (open(f, 'wb') để viết, open(f, 'rb') để đọc). Để "sửa" tệp bạn đã có, hãy chuyển đổi dòng mới của nó bằng cách sử dụng dos2unix.

+1

Nó không hoạt động trên Windows anh ta nên làm unix2dos – Rush

+1

xấu của tôi! misread it – Rush

+0

sẽ không hoạt động 'r + b'? – Surya

Các vấn đề liên quan