使用Python无需本地下载即可读写Azure Blob Storage中.ini文件的方法
无需本地下载即可操作Azure Blob Storage中.ini文件的Python实现方案
完全可以实现该需求,所有操作都可以在内存中完成,不会产生本地临时文件,核心依赖azure-storage-blob官方SDK和Python标准库configparser实现。
前置依赖
先安装所需的Azure存储SDK:
pip install azure-storage-blob
核心实现逻辑
- 通过Azure SDK将blob内容直接下载到内存流
BytesIO对象中,跳过本地磁盘写入步骤 - 使用
configparser直接读取内存流中的.ini格式内容,按需完成字段新增、修改、删除操作 - 将修改后的.ini内容重新写入新的内存流,直接上传回Azure Blob Storage覆盖原文件即可
完整可运行代码示例
from azure.storage.blob import BlobServiceClient from io import BytesIO import configparser # 配置参数替换为自己的实际值 CONNECTION_STRING = "你的Azure存储账户连接字符串" CONTAINER_NAME = "存储容器名称" BLOB_NAME = "目标.ini文件的blob名称" # 初始化Blob客户端 blob_service_client = BlobServiceClient.from_connection_string(CONNECTION_STRING) blob_client = blob_service_client.get_blob_client(container=CONTAINER_NAME, blob=BLOB_NAME) # 1. 读取blob内容到内存流 download_stream = blob_client.download_blob() blob_content = download_stream.readall() in_memory_ini = BytesIO(blob_content) # 移动流指针到开头供configparser读取 in_memory_ini.seek(0) # 2. 解析并修改.ini内容 config = configparser.ConfigParser() # 注意如果你的ini文件保留大小写,需要加上这行避免configparser自动转小写 config.optionxform = str config.read_file(in_memory_ini) # 示例修改操作:修改[database]段下的host字段值 config.set("database", "host", "192.168.1.100") # 示例新增操作:新增[new_section]段和对应字段 config.add_section("new_section") config.set("new_section", "key", "value") # 示例删除操作:删除[old_section]段下的test_key字段 config.remove_option("old_section", "test_key") # 3. 将修改后的内容写入新的内存流 modified_ini = BytesIO() config.write(modified_ini) # 移动流指针到开头供上传使用 modified_ini.seek(0) # 4. 上传回Azure Blob Storage覆盖原文件 blob_client.upload_blob(modified_ini, overwrite=True)
注意事项
- 该方案适配大多数常规大小的.ini文件,若你的.ini文件超过100MB,建议额外加blob租约逻辑避免并发修改冲突
- 若.ini文件中包含中文,可在
config.read_file和config.write阶段指定对应编码格式避免乱码 - 如果你不想覆盖原文件,可以修改上传时的
BLOB_NAME为新的文件名即可
内容的提问来源于stack exchange,提问作者Kadam Solanki
相关产品推荐
相关产品推荐

