好的,我已经在这个问题上坚持了几个小时,而这本应该只需要几分钟的工作。
我有以下代码从数据存储中提取一个 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] 删除。
我来说两句