前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 快速读取压缩包内文件

python 快速读取压缩包内文件

作者头像
HHTjim 部落格
发布2022-09-26 10:40:43
3930
发布2022-09-26 10:40:43
举报
文章被收录于专栏:HHTjim'S 部落格

python 快速读取压缩包内文件

作者:matrix 被围观: 5,421 次 发布时间:2019-10-14 分类:Python | 无评论 »

这是一个创建于 1052 天前的主题,其中的信息可能已经有所发展或是发生改变。

搜索结果一大堆但都没有找到支持url和local path两种读取方式的操作。

留着便于以后直接使用。

gits: https://gist.github.com/Hootrix/cf3e75b1fa6d3d404bc99787f89687f1

代码语言:javascript
复制
import requests,tempfile, zipfile,os
def read_file_for_zip(zip_url, callback=None):
    """
    读取zip包内的文件
    :param zip_url:zip路径/url
    :param callback:读取操作的回调函数 若函数返回false 则不会读取下一个文件
    :return:
    """
    with tempfile.TemporaryFile('w+b') as tmpfile:  # 生成临时文件

        # 判断是否为本地文件
        if os.path.isfile(zip_url):
            #进行本地复制。没必要
            # with open(zip_url,'rb') as f:
            #     while True:
            #         chunk = f.read(1024)
            #         if not chunk:
            #             break
            #         tmpfile.write(chunk)
            tmpfile = zip_url
        else:#进行http请求
            r = requests.get(zip_url, stream=True)
            for chunk in r.iter_content(chunk_size=1024):
                if chunk:
                    tmpfile.write(chunk)
        assert zipfile.is_zipfile(tmpfile), '不是zip文件'
        zf = zipfile.ZipFile(tmpfile)
        for name in zf.namelist():  # list e.g. ['Brave Browser.url', 'Express VPN.url', 'ssl.txt', 'What is my IP.url']
            if callable(callback):
                # zf.read(name) #读取
                if callback(name, zf) is False:# 函数返回false 会终止下一个文件的读取
                    break


### 例子

def cb(filename,context):
    if filename.endswith('.txt'):
        print(context.read(filename).decode('utf-8'))
    # print( context.read(filename))
        return False #终止下一个文件的读取

read_file_for_zip('https://cdn-01.openload.cc/S9Y7m488n8/22c3c58b-1571037628/ssl_proxies.zip',cb)

具体使用见上面例子

兼容大文件url的下载处理

p.s.

在线压缩包读取:

https://extract.me/cn/

参考:

http://www.liujiangblog.com/course/[Python](https://www.hhtjim.com/category/python)/62

https://docs.[python](https://www.hhtjim.com/tag/python).org/2/library/tempfile.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python 快速读取压缩包内文件
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档