具体操作如下:
- 创建
- 修改
- 上传
- 下载
- 删除
先决条件:安装好Python环境,可参考Python安装
开始之前:安装包azure-storage-blob
# 这里使用1.5.0版本的azure-storage-blob
pip install azure-storage-blob==1.5.0
下面开始Blob的操作:
开始之前,我们需要明确Storage Blob的层级结构,首先是有一个account账户,在这个账号下创建容器,再接下来才是blob数据。
从理解上就相当于,account是一个父级目录,container是父级目录下的一个文件夹,blob就是这个文件夹下的具体数据文件(如csv\txt\img等)
account(账号) -> container(容器) -> blob(数据)
1. 根据account_name和account_key创建blob服务
import os
from azure.storage.blob import BlockBlobService
from azure.storage.blob import PublicAccess
account_name = 'xxx' # 这里输入你的account_name
account_key = 'xxx' # 这里为account_key主密钥
endpoint = 'core.chinacloudapi.cn'
# 创建blob服务
blockblobservice=BlockBlobService(account_name=account_name, account_key=account_key,endpoint_suffix=endpoint)
# 使用dir(blockblobservice)可以查看blockblobservice的所有方法
2. 创建和修改container容器
# 创建container容器
container_name = 'containernametest'
blockblobservice.create_container(container_name) #默认创建的是私有的
# 修改blob
blockblobservice.set_container_acl(container_name, public_access=PublicAccess.Container) # 修改为公有访问
3. 上传本地文件到container容器中
file_path = 'D:/testcsv/EDW_DIM_CALENDAR/EDW_DIM_CALENDAR.csv'
blob_name = 'EDW_DIM_CALENDAR/EDW_DIM_CALENDAR.csv'
blockblobservice.create_blob_from_path(container_name=container_name,blob_name= blob_name,file_path=file_path)
参数说明:
- container_name:容器名称
- blob_name:文件上传到blob中的文件名称(绝对路径),相当于在container_name这个目录下再创建的路径,这里的名字可以与参数file_path不一样,不一样时相当于做了个重命名。
- file_path:要上传的文件的本地路径
如上述代码执行后,就会把本地文件’D:/testcsv/EDW_DIM_CALENDAR/EDW_DIM_CALENDAR.csv’,上传到容器containernametest中,文件也会以类似win下的文件夹层级展示。
4. 下载container容器中的文件到本地数据
参数与上传基本一致
blob_name = 'EDW_DIM_CALENDAR/EDW_DIM_CALENDAR.csv'
local_down_path = 'D:/testcsv/EDW_DIM_CALENDAR/EDW_DIM_CALENDAR-11.csv'
blockblobservice.get_blob_to_path(container_name=container_name,blob_name=blob_name,file_path=local_down_path)
5. 删除
blockblobservice.delete_blob(container_name=container_name,blob_name=blob_name)
6. 遍历查看container中的blob数据
blobs = blockblobservice.list_blobs(container_name)
print(type(blobs))
for blob in blobs:
print(blob.name)