Mac OS의 gunzip과 같은 방식으로 Python3의 SFTP에서 가져온 GZIP 파일의 압축을 푸는 방법은 무엇입니까?

Dominooch

좋아, 나는 몇 시간 동안 이것에 붙어있어서 몇 분 밖에 걸리지 않았다.

데이터 저장소에서 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(...).writeopen(...).write직접 압축 파일을 작성 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관