如何以Mac OS';相同的方式在Python3中解压缩从SFTP提取的GZIP文件;是gunzip干的吗?
好吧,我已经在这件事上纠缠了好几个小时了,应该只花几分钟的时间 我有以下代码从数据存储中提取Gzip CSV文件:如何以Mac OS';相同的方式在Python3中解压缩从SFTP提取的GZIP文件;是gunzip干的吗?,python,csv,ftp,gzip,Python,Csv,Ftp,Gzip,好吧,我已经在这件事上纠缠了好几个小时了,应该只花几分钟的时间 我有以下代码从数据存储中提取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.ope
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 bytestrings,但是UTF8解码器无法解析字符串
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
但是!如果我使用FileZilla直接从SFTP服务器下载,并运行上面的gzip.gzip文件
代码,那么它的读取效果会非常好。我的下载器/阅读器一定出了问题,但我不知道会出什么问题
resp = ftps.retrbinary('RETR data/WFSIV0606201701.700.csv.gz', gzip.open('WFSIV0606201701.700.csv.gz', 'wb').write)
此行下载压缩文件,然后在将其写入磁盘时再次压缩
将gzip.open(…)替换为open(…)。write
直接写入压缩文件
此行下载压缩文件,然后在将其写入磁盘时再次压缩
将gzip.open(…)替换为open(…)。write
直接写入压缩文件。Wow。愚蠢的我。谢谢哇!愚蠢的我。谢谢