Mã:
file('pinax/media/a.jpg', 'wb')
open
thay vì file
không được dùng nữa trong Python 2 và bị xóa trong Python 3. Xem stackoverflow.com/questions/112970/…
Mã:
file('pinax/media/a.jpg', 'wb')
open
thay vì file
không được dùng nữa trong Python 2 và bị xóa trong Python 3. Xem stackoverflow.com/questions/112970/…
Câu trả lời:
Chế độ tệp , ghi và nhị phân. Vì bạn đang viết tệp .jpg, nên nó có vẻ ổn.
Nhưng nếu bạn muốn đọc tệp jpg đó, bạn cần sử dụng 'rb'
Thêm thông tin
Trên Windows, 'b' được thêm vào chế độ sẽ mở tệp ở chế độ nhị phân, vì vậy cũng có các chế độ như 'rb', 'wb' và 'r + b'. Python trên Windows phân biệt giữa tệp văn bản và tệp nhị phân; các ký tự cuối dòng trong tệp văn bản được tự động thay đổi một chút khi dữ liệu được đọc hoặc ghi. Việc sửa đổi hậu trường này đối với dữ liệu tệp là tốt cho các tệp văn bản ASCII, nhưng nó sẽ làm hỏng dữ liệu nhị phân như trong tệp JPEG hoặc EXE.
fd.write("foo\n")
thực sự ghi trên đĩa foo\r\n
(lưu ý \r
).
Dấu wb
chỉ ra rằng tệp được mở để ghi ở chế độ nhị phân.
Khi viết ở chế độ nhị phân, Python không thực hiện thay đổi nào đối với dữ liệu khi nó được ghi vào tệp. Tuy nhiên, ở chế độ văn bản (khi b
bị loại trừ như chỉ w
hoặc khi bạn chỉ định chế độ văn bản với wt
), Python sẽ mã hóa văn bản dựa trên mã hóa văn bản mặc định. Ngoài ra, Python sẽ chuyển đổi phần cuối dòng ( \n
) thành bất kỳ phần cuối dòng cụ thể của nền tảng nào, điều này sẽ làm hỏng tệp nhị phân như tệp exe
hoặc png
tệp.
Do đó, chế độ văn bản nên được sử dụng khi viết tệp văn bản (cho dù sử dụng văn bản thuần túy hay định dạng dựa trên văn bản như CSV), trong khi chế độ nhị phân phải được sử dụng khi viết tệp không phải văn bản như hình ảnh.
Người giới thiệu:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
tùy chọn. Bằng cách sử dụng w
tùy chọn thay thế, tôi đã có thể làm cho nó hoạt động bình thường.
b
chế độ này chỉ có tác dụng trên Windows. Điều đó hiện đã được xóa khỏi tài liệu và chế độ nhị phân "sẽ được sử dụng cho tất cả các tệp không chứa văn bản".
Đó là chế độ mà bạn đang mở tệp. "wb" có nghĩa là bạn đang ghi vào tệp (w) và bạn đang ghi ở chế độ nhị phân (b).
Kiểm tra tài liệu để biết thêm: clicky
open
thay thếfile
.file
không được chấp nhận 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 câu hỏi này để biết thêm thông tin.