2010-04-19 3 views

답변

65

File mode, 쓰기 및 바이너리. .jpg 파일을 작성 중이므로 잘 보입니다. 당신이 그 JPG 파일을 읽을 생각하면

는하지만 정보가

Windows에서

, 모드 에 추가 'B 것은'바이너리 모드로 파일을 엽니 다

'rb', 그래서 를 사용할 필요가 'rb', 'wb', 및 'r + b'와 같은 모드가 있습니다. Windows상의 파이썬은 텍스트와 바이너리를 구별합니다. 파일; 텍스트 파일의 줄 끝 문자는 데이터를 읽거나 쓸 때 약간 으로 자동 변경됩니다. ASCII 데이터 파일의 경우 파일 데이터의 배후 수정이 적합하지만 JPEG 또는 EXE 파일의 이진 데이터 이 손상됩니다.

+3

구체적으로, 텍스트 모드로 열리는 파일의 경우,'fd.write ("foo \ n")'는 실제로 디스크'foo \ r \ n' ('\ r '에주의)에 씁니다. –

3

파일을 여는 모드입니다. "wb"은 파일 (w)에 쓰고 있고 이진 모드 (b)로 쓰고 있음을 의미합니다. 더에 대한 문서 밖으로

점검 : clicky

38

wb 파일이 바이너리 모드로 쓰기 위해 열을 나타냅니다.

UNIX 시스템 (Linux, Mac OS X 등)에서 바이너리 모드는 아무 것도하지 않습니다. 다른 파일과 동일한 방법으로 텍스트 파일을 처리합니다. 그러나 Windows에서는 약간 수정 된 줄 끝으로 텍스트 파일이 작성됩니다. 실제로 exe 또는 jpg 파일과 같은 실제 이진 파일을 처리 할 때 심각한 문제가 발생합니다. 따라서 텍스트가 아닌 파일을 열 때 Unix에서도 wb 또는 rb을 사용해야합니다. 텍스트 파일에만 일반 w 또는 r을 사용하십시오.

은 참조 : http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files

4

은 또한 당신은 file 대신 open를 사용하는 것이 좋습니다. file은 Python 2에서 더 이상 사용되지 않으며 (어떤 버전을 찾을 수없는) py3k에서 제거되었습니다. (고마워 Scott)

자세한 내용은 this question을 참조하십시오.

+1

이 답변은 아마도 첫 번째 답변에 대한 의견으로 더 좋을 것입니다. –

+2

'open' 대신'file'을 사용하는 것은 Python 2에서 오랫동안 사용되지 않았습니다. 파이썬 3에서 제거되었습니다. –

+0

@ Scott : 감사합니다. 내 대답을 편집했습니다. @ 브라이언 : 당신 말이 맞아요. 다음 번에 할게요. 고마워요. –

관련 문제