》一文中介绍了 Azure Blob Storage 的基本概念,并通过 C# 代码展示了如何进行基本的操作。最近笔者需要在 Linux 系统中做类似的事情,于是决定使用 Azure 提供的 Azure Storage SDK for Python 来操作 Blob Storage。这样今后无论在 Windows 上还是 Linux上,都用 Python 就可以了。对 Azure Blob Storage 概念还不太熟悉的同学请先参考。
。
查看代码操作的结果:
mystoragekey = <span style="color: #800000">"<span style="color: #800000">yyyy<span style="color: #800000">"<span style="color: #000000">
blob_service = BlockBlobService(account_name=mystoragename,account_key=<span style="color: #000000">mystoragekey)
blob_service.create_blob_from_path(
<span style="color: #800000">'<span style="color: #800000">nickcon<span style="color: #800000">'<span style="color: #000000">,<span style="color: #800000">'<span style="color: #800000">myblobcortana.jpg<span style="color: #800000">'<span style="color: #000000">,<span style="color: #800000">'<span style="color: #800000">cortana-wallpaper.jpg<span style="color: #800000">'<span style="color: #000000">,content_settings=ContentSettings(content_type=<span style="color: #800000">'<span style="color: #800000">image/jpg<span style="color: #800000">'))
mystoragekey = <span style="color: #800000">"<span style="color: #800000">yyyy<span style="color: #800000">"<span style="color: #000000">
blob_service = BlockBlobService(account_name=mystoragename,account_key=<span style="color: #000000">mystoragekey)
blob_service.set_container_acl(<span style="color: #800000">'<span style="color: #800000">nickcon<span style="color: #800000">',public_access=PublicAccess.Container)
mystoragekey = <span style="color: #800000">"<span style="color: #800000">yyyy<span style="color: #800000">"<span style="color: #000000">
blob_service = BlockBlobService(account_name=mystoragename,account_key=<span style="color: #000000">mystoragekey)
<span style="color: #008000">#<span style="color: #008000"> 下载一个 Blob Container 中的所有文件
<span style="color: #0000ff">def<span style="color: #000000"> downloadFilesInContainer(blobContainName):
generator =<span style="color: #000000"> blob_service.list_blobs(blobContainName)
<span style="color: #0000ff">for blob <span style="color: #0000ff">in<span style="color: #000000"> generator:
<span style="color: #008000">#<span style="color: #008000"> 获得 Blob 文件的目录路径
blobDirName =<span style="color: #000000"> os.path.dirname(blob.name)
<span style="color: #008000">#<span style="color: #008000"> 把 Blob Container 的名称也添加为一级目录
newBlobDirName =<span style="color: #000000"> os.path.join(blobContainName,blobDirName)
<span style="color: #008000">#<span style="color: #008000"> 检查文件目录是否存在,不存在就创建
<span style="color: #0000ff">if <span style="color: #0000ff">not<span style="color: #000000"> os.path.exists(newBlobDirName):
os.makedirs(newBlobDirName)
localFileName =<span style="color: #000000"> os.path.join(blobContainName,blob.name)
blob_service.get_blob_to_path(blobContainName,blob.name,localFileName)
<span style="color: #008000">#<span style="color: #008000"> 获得用户所有的 Blob Container
containerGenerator =<span style="color: #000000"> blob_service.list_containers()
<span style="color: #0000ff">for con <span style="color: #0000ff">in<span style="color: #000000"> containerGenerator:
downloadFilesInContainer(con.name)