Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以Mac OS';相同的方式在Python3中解压缩从SFTP提取的GZIP文件;是gunzip干的吗?_Python_Csv_Ftp_Gzip - Fatal编程技术网

如何以Mac OS';相同的方式在Python3中解压缩从SFTP提取的GZIP文件;是gunzip干的吗?

如何以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

好吧,我已经在这件事上纠缠了好几个小时了,应该只花几分钟的时间

我有以下代码从数据存储中提取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 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。愚蠢的我。谢谢哇!愚蠢的我。谢谢