좋아, 나는 몇 시간 동안 이것에 붙어있어서 몇 분 밖에 걸리지 않았다.
데이터 저장소에서 gzip 압축 된 CSV 파일을 가져 오는 다음 코드가 있습니다.
from ftplib import FTP_TLS
import gzip
import csv
ftps = FTP_TLS('waws-prod.net')
ftps.login(user='foo', passwd='bar')
resp = ftps.retrbinary('RETR data/WFSIV0606201701.700.csv.gz', gzip.open('WFSIV0606201701.700.csv.gz', 'wb').write)
파일이 pwd에 나타나고 Mac 압축 해제 도구를 열 수도 있으며 원본 CSV는 완벽하게 압축 해제됩니다.
그러나 gzip 라이브러리를 사용하여이 파일의 압축을 풀려고하면 구문 분석 할 UTF8 인코딩 문자열을 가져올 수 없습니다.
f=gzip.GzipFile('WFSIV0606201701.700.csv.gz', 'rb')
s = f.read()
UTF8 바이트 문자열로 보이는 것을 얻지 만 utf8 디코더는 문자열을 구문 분석 할 수 없습니다.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
그러나! FileZilla를 사용하여 SFTP 서버에서 직접 다운로드하고 gzip.GzipFile
위 의 코드를 실행하면 완벽하게 읽습니다. 내 다운로더 / 리더에 문제가있는 것 같지만 무엇이 잘못되었는지에 대한 단서가 없습니다.
resp = ftps.retrbinary('RETR data/WFSIV0606201701.700.csv.gz', gzip.open('WFSIV0606201701.700.csv.gz', 'wb').write)
이 줄은 압축 파일을 다운로드 한 다음 디스크에 쓸 때 다시 압축합니다 .
교체 gzip.open(...).write
로 open(...).write
직접 압축 파일을 작성 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다