好友
阅读权限10
听众
最后登录1970-1-1
|
爆炒小提莫
发表于 2018-12-10 00:28
本帖最后由 爆炒小提莫 于 2018-12-10 00:51 编辑
由于项目中需要使用到微软的Azure Blob Storage进行文件存储,我们需要用python代码去做一些自动化的检测,在这里写一下自己的操作代码。
思路:把需要检查的文件名写在一张properties配置文件中或者维护在数据库中,在检查的时候把文件名读取到代码的列表里面,然后去遍历blob storage中的文件,查找文件是否已经存在于blob中。
对于blob的操作,网上比较少且基本一致,没有达到自己想要的效果,最好去看源码,或者用idea工具去看代码中的方法。
1.首先安装azure-storage:pip install azure-storage
2.BlockBlobService 的基本操作方法
BlockBlobService的方法图1
BlockBlobService的方法图2
BlockBlobService的方法图3
3.blob的信息在properties里面
代码呈现:
[Python] 纯文本查看 复制代码 # -*- 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)
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|