데이터의 일부가 바이너리 (MySQL의 blob 데이터 유형)이며 실제로는 스크랩되고 gzipped 된 웹 페이지입니다. 이제 저는 그것들을 추출하여 각 레코드를 gzip 파일에 기록하고 싶습니다. gzip 파일은 gzip으로 압축 된 후 데이터라고 할 수 있습니다.파일에 gzipped-already 데이터 쓰기
하지만 어떻게해야합니까? 검색을 통해 gzip 파일을 쓰는 방법에 대한 수많은 예제를 원래 데이터 (gzip 된 데이터가 아님)에서 찾을 수 있습니다. gzip으로 된 문자열을 파일에 직접 작성해도 gzip 파일이 작성되지는 않습니다. "범위에없는 서수"예외는 없습니다.
도움을 주시겠습니까? 미리 감사드립니다. 나는
편집 ... 파이썬에 안돼서 :이 예외의 원인
def store_cache(self, content, news_id):
if not content:
return
# some of the records may contain normal data (not gzipp-ed), hence this try block
try:
content = self.gunzip(content)
except:
return
import gzip
with gzip.open('static/cache/%s' % (self.base36encode(news_id),), 'wb') as f:
f.write(content)
f.close()
: 여기 내가 사용하는 방법입니다
<type 'exceptions.UnicodeEncodeError'> at /migrate
'ascii' codec can't encode character u'\u1edb' in position 186: ordinal not in range(128)
가 그리고 이것은 가장 안쪽의 역 추적입니다 :
E:\Python27\lib\gzip.py in write
self.crc = zlib.crc32(data, self.crc) & 0xffffffffL
파일을 저장하고 이러한 오류가 발생하는 코드를 게시하지 않는 이유는 무엇입니까? 어쩌면 누군가 당신이 그것을 바로 잡도록 도울 수 있습니다. – Mat
바이너리 데이터 (MySQL Blob에서)를 .gz 확장자의 파일에 쓰면 작동합니까? –
@ Yannick 아니요, UnicodeEncodeError가 항상 나타납니다. 나는 코덱, utf-8 인코딩/디코딩 등을 시도했다 ... –