답변:
파일 모드 , 쓰기 및 바이너리. .jpg 파일을 작성하고 있으므로 괜찮아 보입니다.
하지만 jpg 파일을 읽으려면 'rb'
더 많은 정보
Windows에서 모드에 'b'가 추가되면 바이너리 모드로 파일이 열리므로 'rb', 'wb'및 'r + b'와 같은 모드도 있습니다. Windows의 Python은 텍스트와 바이너리 파일을 구분합니다. 텍스트 파일의 줄 끝 문자는 데이터를 읽거나 쓸 때 자동으로 약간 변경됩니다. 파일 데이터에 대한 이러한 비하인드 수정은 ASCII 텍스트 파일에 적합하지만 JPEG 또는 EXE 파일과 같은 바이너리 데이터를 손상시킵니다.
fd.write("foo\n")
실제로 디스크에 씁니다 foo\r\n
(참고 \r
).
는 wb
파일이 바이너리 모드로 쓰기 위해 열을 나타냅니다.
바이너리 모드로 쓸 때 Python은 파일에 기록 될 때 데이터를 변경하지 않습니다. 그러나 텍스트 모드에서 ( b
가 그냥 제외 w
되거나를 사용하여 텍스트 모드를 지정할 때 wt
) Python은 기본 텍스트 인코딩을 기반으로 텍스트를 인코딩합니다. 또한 Python은 줄 끝 ( \n
)을 플랫폼 별 줄 끝으로 변환 하여 exe
또는 png
파일 과 같은 바이너리 파일을 손상 시킵니다.
따라서 텍스트 파일을 작성할 때는 텍스트 모드를 사용해야하며 (일반 텍스트 또는 CSV와 같은 텍스트 기반 형식을 사용하든) 이미지와 같은 텍스트가 아닌 파일을 작성할 때는 이진 모드를 사용해야합니다.
참조 :
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
옵션 으로 열린 텍스트 파일 (CSV 형식, 궁극적으로 그다지 중요하지 않음)에 쓰려고하는 중에 오류가 발생했습니다 . w
대신 옵션 을 사용하여 제대로 작동하도록 할 수있었습니다.
b
모드가 Windows에만 영향을 미친 다고 말했습니다 . 이제 문서에서 제거되었으며 바이너리 모드는 "텍스트를 포함하지 않는 모든 파일에 사용되어야합니다".
이것이 파일을 여는 모드입니다. "wb"는 파일 (w)에 쓰고 있고 바이너리 모드 (b)로 쓰고 있음을 의미합니다.
자세한 내용은 문서를 확인하세요 : clicky
open
대신file
.file
Python 2에서 더 이상 사용되지 않으며 (어떤 버전을 찾을 수 없음) py3k에서 제거되었습니다. (Scott에게 감사합니다) 자세한 내용은 이 질문 을 참조하십시오.