Bạn nói: "Có thể không rõ ràng nhưng nếu bạn sử dụng StringIO để xử lý dữ liệu nhị phân, bạn sẽ không may mắn với Python 2.7 hoặc mới hơn ".
Điều này không rõ ràng vì điều đó không đúng.
Nếu bạn có mã hoạt động trên 2.6 trở lên, mã này tiếp tục hoạt động trên 2.7. screen dump chưa được chỉnh sửa (Windows Command prompt gói cửa sổ ở col 80 và tất cả):
C:\Users\John>\python26\python -c"import sys,StringIO;s=StringIO.StringIO();s.wr
ite('hello\n');print repr(s.getvalue()), sys.version"
'hello\n' 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
C:\Users\John>\python27\python -c"import sys,StringIO;s=StringIO.StringIO();s.wr
ite('hello\n');print repr(s.getvalue()), sys.version"
'hello\n' 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)]
Nếu bạn cần phải viết mã mà chạy trên 2,7 và 3.x, sử dụng lớp BytesIO
trong module io
.
Nếu bạn cần/muốn một mã đơn lẻ hỗ trợ 2.7, 2.6, ... và 3.x, bạn sẽ cần phải làm việc chăm chỉ hơn một chút. Sử dụng mô-đun six sẽ giúp ích rất nhiều.
Nguồn
2011-06-25 22:59:51
Không rõ vấn đề của bạn là gì. Vui lòng giải thích vấn đề bị cáo buộc của bạn bằng cách hiển thị mã hoạt động ở 2.6 nhưng không phải là 2.7. Hoặc xem câu trả lời của tôi. –
Tác giả chưa chọn câu trả lời đúng! – heltonbiker