파이썬을 사용하여 웹 서버에서 zip 파일을 프로그래밍 방식으로 다운로드하고 있습니다. 웹 브라우저를 사용하면 좋습니다. 이 부분 스크립트를 작성했습니다.바이너리 데이터에 대해 Urlllib2.urlopen을 사용할 수 없습니까?
response = urllib2.urlopen(url, data, 10)
the_page = response.read()
f = open(filename, 'w')
f.write(the_page)
f.close()
요청이 성공하고 데이터를받습니다. 문제는 내가 다운로드하는 파일 (zip 파일)이 작동하지 않는다는 것입니다. 파일이 손상된 것 같습니다. 그것은 길이의 오른쪽 일종의 것으로 보인다 및 텍스트 편집기에서 보았다 압축 파일 내용처럼 보입니다. 다음은 다운로드 한 헤더입니다.
콘텐츠 길이 : 9891 콘텐츠 - 처리 : 콘텐츠 - 처리 : 첨부 파일; 파일 이름 = "TrunkBackup_201.zip" 날짜 : 2009년 12월 30일 (수) 그리니치 표준시 12시 22분 8초 수락 - 범위 : 나는 응답의 길이를 확인하면 바이트는
, 내가 무슨 일이 일어나고 있는지 의심 9891.에서 정확 내가 response.read()
이라고 부를 때 그 결과는 '유용하게'정규화 된 캐리지 리턴 문자열 (예 : \r
~ \n
)입니다. 파일을 쓸 때 이진 데이터가 약간 잘못되어 zip 파일이 손상되었습니다.
내 문제는 (A) 내가 옳은지 잘 모르겠다. (B) 내가 옳은지 어떻게 바이너리 데이터를 저장 하는가? 바이너리 모드로 파일을 열
파일을 이진 모드로 열 때 작동합니까 ('open (filename, 'wb')')? –