从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}")

相关推荐
冷琴199611 分钟前
基于python+django的图书借阅网站-图书借阅管理系统源码+运行步骤
开发语言·python·django
HHONGQI12322 分钟前
Linux 基础入门操作 第十二章 TINY Web 服务器
linux·服务器·前端
格子先生Lab24 分钟前
Linux常用命令指南
linux·服务器·开发·运营·linux命令
李鲶鱼25 分钟前
如何创建一个socket服务器?
c语言·python·学习
Pole丶逐26 分钟前
Docker 部署医学影像 DICOM 服务器 Orthanc
服务器·docker·容器
故事与他64541 分钟前
Apache中间件漏洞攻略
java·服务器·安全·网络安全·中间件·log4j·apache
落霞与孤鹭齐飞。。1 小时前
SSM社区生活超市管理
java·服务器·开发语言·数据库·生活·课程设计
Sʜᴀᴅᴏᴡ . ₪3361 小时前
IIS漏洞再现
运维·服务器
Hello.Reader1 小时前
用 Python 也能做微服务?
开发语言·python·微服务
亦良Cool1 小时前
修改服务器windows远程桌面默认端口号
运维·服务器·windows