具体操作如下:

  • 创建
  • 修改
  • 上传
  • 下载
  • 删除

先决条件:安装好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)
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐