Trả lời
File mode, viết và nhị phân. Vì bạn đang viết tệp .jpg, có vẻ ổn.
Nhưng nếu bạn phải đọc rằng tập tin jpg bạn cần phải sử dụng 'rb'
Thông tin thêm
Trên Windows, 'b' nối vào chế độ mở tập tin trong chế độ nhị phân, vì vậy cũng có các chế độ như 'rb', 'wb', và 'r + b'. Python trên Windows tạo ra sự khác biệt giữa văn bản và tệp nhị phân ; các ký tự cuối dòng trong các tệp văn bản được tự động thay đổi một chút khi dữ liệu được đọc hoặc ghi. Sửa đổi hậu trường này thành dữ liệu tệp là tốt cho văn bản ASCII tệp nhưng sẽ làm hỏng dữ liệu nhị phân như trong tệp JPEG hoặc EXE.
Đó là chế độ bạn đang mở tệp. "wb" có nghĩa là bạn đang ghi vào tệp (w) và rằng bạn đang viết ở chế độ nhị phân (b).
Kiểm tra các tài liệu hướng dẫn để biết thêm: clicky
Các wb
chỉ ra rằng các tập tin được mở ra cho các văn bản trong chế độ nhị phân.
Trên hệ thống Unix (Linux, Mac OS X, v.v.), chế độ nhị phân không làm gì cả - chúng xử lý các tệp văn bản giống như cách mọi tệp khác được xử lý. Tuy nhiên, trên Windows, các tệp văn bản được viết bằng các kết thúc dòng được sửa đổi một chút. Điều này gây ra một vấn đề nghiêm trọng khi xử lý các tệp nhị phân thực, như các tệp exe
hoặc jpg
. Do đó, khi mở các tệp không được coi là văn bản, ngay cả trong Unix, bạn nên sử dụng wb
hoặc rb
. Chỉ sử dụng đồng bằng w
hoặc r
chỉ dành cho tệp văn bản.
tham khảo: http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files
Ngoài ra bạn nên xem xét sử dụng open
thay vì file
. file
không còn được dùng trong Python 2 (không thể tìm thấy phiên bản nào) và đã bị xóa trong py3k. (cảm ơn Scott)
Xem this question để biết thêm thông tin.
Câu trả lời này có lẽ sẽ tốt hơn như một bình luận cho câu trả lời đầu tiên. –
Sử dụng 'tệp' thay vì' mở' đã không còn được dùng trong Python 2 trong một thời gian nữa. Nó đã được * gỡ bỏ * từ Python 3. –
@Scott: cảm ơn, đã chỉnh sửa câu trả lời của tôi. @brian: bạn nói đúng, tôi sẽ làm điều này lần sau, cảm ơn. –
- 1. Khối mã này có nghĩa là gì?
- 2. Mã C++ này có nghĩa là gì?
- 3. `{0: X2}` có nghĩa là gì trong mẫu mã này?
- 4. @ trong mẫu mã này có nghĩa là gì?
- 5. ENDOFTEXT có nghĩa là gì trong mã Perl này?
- 6. 0x0F có nghĩa là gì? Và mã này có nghĩa là gì?
- 7. Cú pháp python này có nghĩa là gì?
- 8. django request.session.get ("tên", Sai) - Mã này có nghĩa là gì?
- 9. (^?) * Có nghĩa là gì trong regex này?
- 10. Mã sử dụng này là gì?
- 11. Mã này có nghĩa là gì: "print >> sys.stderr"
- 12. Cảnh báo này có nghĩa là gì?
- 13. "e" có nghĩa là gì trong định nghĩa hàm này?
- 14. gì có nghĩa là '2e4' trong mã
- 15. `_time_independent_equals` này có nghĩa là gì?
- 16. Ký hiệu '()' này có nghĩa là gì?
- 17. '~' có nghĩa là gì trong python?
- 18. Lỗi valgrind này có nghĩa là gì?
- 19. Lỗi web.xml này có nghĩa là gì?
- 20. Đang cố gắng sử dụng Pyglet - lỗi này có nghĩa là gì?
- 21. Đường phân tách này trong Scala có nghĩa là gì?
- 22. Câu này có nghĩa gì trong 'The Zen of Python'?
- 23. Có nghĩa là $ 1 $ 2 $ 4 có nghĩa là gì trong preg_replace này?
- 24. "Điều này [0]" có nghĩa là gì trong C#?
- 25. "iif" này có nghĩa là gì trong php?
- 26. Shellcode trong C - Điều này có nghĩa là gì?
- 27. Mã hiển thị này có ý nghĩa gì?
- 28. Trả về -1, 1 và 0 có nghĩa là gì trong mã Javascript này?
- 29. Có ý nghĩa gì đối với đoạn mã này không?
- 30. "&" có nghĩa là gì trong trường hợp này?
Cụ thể, trong Windows cho một tệp được mở ở chế độ văn bản, 'fd.write (" foo \ n ")' thực sự ghi trên đĩa 'foo \ r \ n' (lưu ý' \ r'). –