2010-01-29 4 views
1

이미지를 이진 모드로 읽으면서 다음과 같이 데이터베이스에 저장할 수 있습니다.왜 파이썬은 바이너리 모드로 이미지를 읽을 수 없습니까?

img = open("Last_Dawn.jpg") 
t = img.read() 
save_to_db(t) 

이것은 Mac에서 작동합니다. 그러나 Windows에서 img.read()가 잘못된 것입니다. 전체 세트에서 조금 벗어났습니다.

그럼 내 첫 번째 질문은 위의 코드가 Windows에서 작동하지 않는 이유는 무엇입니까?

둘째로 : 다른 방법이 있습니까?

고마워요!

답변

2

확실히 말할 수는 없지만 ISO C 표준이 구분하지 않는다는 것을 알고 있습니다. fopen을 호출했지만 Windows 을 호출 할 때 이진 모드와 비 바이너리 모드 간의 차이는입니다.

파이썬 코드는 커버 아래에 fopen("Last_Dawn.jpg","r")을 사용하고 있으며이 코드는 Windows에서 비 바이너리 모드로 열리고 있습니다.

이렇게하면 줄 끝 문자 (LF -> CRLF)와 다른 문자가 변환 될 가능성이 높습니다. 당신 자신이 열려있는 문에 'RB'로 모드를 지정하면

, 그게 해결해야

img = open("Last_Dawn.jpg", "rb") 
6

당신은 바이너리 모드로 열어야합니다 :

img = open('whatever.whatever', 'rb') 

여기 open 함수에 대한 설명서를 참조하십시오

img = open("Last_Dawn.jpg", 'rb') 
2
open(filename, 'rb') 
관련 문제