当前位置: 首页 > article >正文

从blob 下载zip文件到本地并解压

def UnzipFile(req: func.HttpRequest) -> func.HttpResponse:

   

    local_download_path="\\temp"

    extract_to = "\\unzip"

    req_body = req.get_json()

    filePath = req_body.get("filePath")

    logging.info(f'filePath:{filePath}')    

    # 创建服务客户端和文件系统客户端

    service_client = get_service_client(os.getenv("CONNECTION_STRING"))

    file_system_client = service_client.get_file_system_client(os.getenv("CONTAINER"))

    logging.info(f'创建服务客户端和文件系统客户端 file_system_client')    

    try:

        # 确保下载目录和解压目录存在

        os.makedirs(os.path.join( os.getcwd(), local_download_path), exist_ok=True)

        os.makedirs(os.path.join( os.getcwd(), extract_to), exist_ok=True)

    except Exception as e:

        logging.info(f'get local file path:{e}')

    try:

        # 下载压缩文件

        local_zip_path = os.path.join( os.getcwd(), local_download_path, os.path.basename(filePath))

        download_file(file_system_client, filePath, local_zip_path)

        extract_to = os.path.join( os.getcwd(), extract_to)

    except Exception as e:

        logging.info(f'download_file failed:{e}')

    logging.info(f'local_zip_path:{local_zip_path}')

    logging.info(f'extract_to:{extract_to}')

    # 解压文件

    unzip_file(local_zip_path, extract_to)

    data = {

        'result': 'success',

        'message': 'process success.',

        'data': [],

        'code': 200

    }

    # 将 Python 字典转换为 JSON 字符串

    json_string = json.dumps(data, indent=4)  # indent 参数用于格式化输出

    return func.HttpResponse(

            json_string,

            status_code=200

    )

def get_service_client(connection_string):

    service_client = DataLakeServiceClient.from_connection_string(connection_string)

    return service_client

def download_file(file_system_client, file_path, local_path):

    try:

        file_client = file_system_client.get_file_client(file_path)

        download = file_client.download_file()

        with open(local_path, "wb") as local_file:

            local_file.write(download.readall())

        print(f"Downloaded file to {local_path}")

    except Exception as e:

        print(e)

       

def unzip_file(zip_path, extract_to):

    with zipfile.ZipFile(zip_path, 'r') as zip_ref:

        zip_ref.extractall(extract_to)

    print(f"Extracted all files to {extract_to}")


http://www.kler.cn/news/283628.html

相关文章:

  • 罗德与施瓦茨RS、UPV 音频分析仪 250KHZ 双通道分析仪UPL
  • 【面试经验】字节产品经理二面面经
  • MySQL空间函数ST_Distance_Sphere()的使用
  • Mysql-redo logs,binlog以及undo logs的作用及区别
  • 对mozjpeg中的函数名进行替换
  • 详解Spring AOP
  • 简单的Tcp服务器
  • 【香橙派系列教程】(十六) 语音模块与阿里云结合
  • Kafka日志及常见问题
  • x-cmd mod | x scoop - Windows 开源包管理工具
  • Java、python、php版 美发美甲预约服务平台 美容院管理系统(源码、调试、LW、开题、PPT)
  • 安卓15发布日期确定,安卓15 谷歌GMS认证截止日期有重大变化!安卓版本GMS认证截止时间更新,谷歌GMS认证之MADA/EDLA设备认证截止时间介绍
  • CSS 的文字平滑属性font-smooth
  • C++研发笔记1——github注册文档
  • C++类和对象(5)——运算符重载(以日期类为例)
  • 数据库,SQL和 MySql的三者关系
  • 智能听诊器:开启宠物健康管理新维度
  • 【网络安全】打开这份“开学礼” 谨防骗子“冲业绩”
  • 【Spring Boot 3】【Web】同时启用 HTTP 和 HTTPS
  • vue3+ts+vite项目代码检查报错(vue-tsc)
  • 解决Nginx负载均衡中的慢启动问题:策略与实践
  • k8s-pod 实战八 (gRPC 探测详细分析)
  • Cpp学习手册-基础学习
  • Python 处理 PDF 文件(PyPDF2, ReportLab)
  • 云轴科技ZStack与鼎甲科技共创数据保护新篇章
  • 显示中文字体问题解决:ImportError: The _imagingft C module is not installed
  • 最简洁!四步完成C#——opencv环境配置
  • 大模型企业应用落地系列八》基于大模型的对话式推荐系统》用户交互层
  • Python编码系列—Python CI/CD 实战:构建高效的自动化流程
  • MySQL集群基本概率