首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确下载.gz与http.client

正确下载.gz与http.client
EN

Stack Overflow用户
提问于 2017-06-28 15:52:47
回答 1查看 326关注 0票数 1

我目前正在从如下所示的服务器下载.tar.gz文件:

代码语言:javascript
复制
conn = http.client.HTTPSConnection(host = host,
                                   port = port,
                                   cert_file = pem,
                                   key_file = key,
                                   context = ssl.SSLContext(ssl.PROTOCOL_TLS))

conn.request('GET', url)

rsp = conn.getresponse()

fp = r"H:\path\to\new.tar.gz"

with open(fp, 'wb') as f:
    while True:
        piece = rps.read(4096)
        if not piece:
            break
        f.write(piece)

但是,我担心这种方法会导致压缩问题,因为有时文件仍然是this的,而其他时候则不是。

问题:

使用gzip模块从套接字流中保存文件的适当方法是什么?

支持信息:

我做了以下工作:

代码语言:javascript
复制
conn = http.client.HTTPSConnection(host = host,
                                       port = port,
                                       cert_file = pem,
                                       key_file = key,
                                       context = ssl.SSLContext(ssl.PROTOCOL_TLS))

conn.request('GET', url)

rsp = conn.getresponse()

fp = r"H:\path\to\new.tar"

f_like_obj = io.BytesIO()
f_like_obj.write(rsp.read())
f_like_obj.seek(0)
f_decomp = gzip.GzipFile(fileobj=f_like_obj, mode='rb')

with open(fp, 'wb') as f:
    f.write(f_decomp.read())

但是,有时在两个不同的时间下载的同一个文件会出错:

"Not a gzipped file (b'<!')"

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 17:19:25

试试这个:

导入http.client导入gzip

代码语言:javascript
复制
conn = http.client.HTTPSConnection(host = host,
                                       port = port,
                                       cert_file = pem,
                                       key_file = key,
                                       context = ssl.SSLContext(ssl.PROTOCOL_TLS))

conn.request('GET', url)

rsp = conn.getresponse()

fp = r"H:\path\to\new.tar"

with gzip.GzipFile(fileobj=rsp) as decomp, open(fp, 'wb') as f:
    f.write(decomp.read())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44807353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档