爆炒小提莫 发表于 2018-12-10 00:28

用python对Azure Blob Storage进行操作

本帖最后由 爆炒小提莫 于 2018-12-10 00:51 编辑

由于项目中需要使用到微软的Azure Blob Storage进行文件存储,我们需要用python代码去做一些自动化的检测,在这里写一下自己的操作代码。
思路:把需要检查的文件名写在一张properties配置文件中或者维护在数据库中,在检查的时候把文件名读取到代码的列表里面,然后去遍历blob storage中的文件,查找文件是否已经存在于blob中。
对于blob的操作,网上比较少且基本一致,没有达到自己想要的效果,最好去看源码,或者用idea工具去看代码中的方法。

1.首先安装azure-storage:pip install azure-storage
2.BlockBlobService 的基本操作方法



3.blob的信息在properties里面



代码呈现:
# -*- coding:utf-8 -*-
from azure.storage.blob import BlockBlobService

# Azure Blob Storgae Account
mystoragename = u"mystorageaccount"

# Azure Blob Storgae Key
mystoragekey = u"myaccountkey=="

# 配置连接到Blob Storage信息, 中国区需要配置endpoint_suffix='core.chinacloudapi.cn'
blob_service = BlockBlobService(account_name=mystoragename, account_key=mystoragekey,endpoint_suffix='core.chinacloudapi.cn')

# param str container_name: 一个已经存在于storage accout下的 container 名称
container_name = "mycontainer"
filelist=['a.txt','b.txt']
blob_file_list=[]

# blob 文件名称是带完整的路径的: /a/b/c/d.txt,一个完整路径的文件就是一个blob,需要截取最后的文件名
for blob in generator:
    #print(blob.name)
    #print(blob.properties.content_length) # blob的信息在properties里面
    print(blob.name.split("/")[-1])
    blob_file_list.append(blob.name.split("/")[-1])

file_not_in_blob = []
print(file_list)
for i in filelist:
    if i not in blob_file_list:
      print(i)
      file_not_in_blob.append(i)

Quincy379 发表于 2018-12-10 08:00

厉害,膜拜大神!

psx1lin 发表于 2018-12-10 08:19

研究
收藏了

旧殇丶AS 发表于 2018-12-10 08:36

{:301_1009:}收藏了,谢谢楼主

fsrank 发表于 2018-12-10 09:25

学习了, 谢谢

小黑LLB 发表于 2019-2-23 22:44

好厉害的样子 感谢分享 支持一波 {:1_893:}{:1_893:}{:1_893:}
页: [1]
查看完整版本: 用python对Azure Blob Storage进行操作