Python 操作 Azure Blob Storage

》一文中介绍了 Azure Blob Storage 的基本概念,并通过 C# 代码展示了如何进行基本的操作。最近笔者需要在 Linux 系统中做类似的事情,于是决定使用 Azure 提供的 Azure Storage SDK for Python 来操作 Blob Storage。这样今后无论在 Windows 上还是 Linux上,都用 Python 就可以了。对 Azure Blob Storage 概念还不太熟悉的同学请先参考

pip install azure-storage

查看代码操作的结果:

create_blob_from_path create_blob_from_stream create_blob_from_bytes create_blob_from_text

azure.storage.blob azure.storage.blob mystoragename = <span style="color: #800000">"<span style="color: #800000">xxxx<span style="color: #800000">"<span style="color: #000000">
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">'))

azure.storage.blob azure.storage.blob mystoragename = <span style="color: #800000">"<span style="color: #800000">xxxx<span style="color: #800000">"<span style="color: #000000">
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)

generator = blob_service.list_blobs( blob (blob.name)

blob_service.get_blob_to_path(,,)

blob_service.delete_blob(,)

azure.storage.blob mystoragename = <span style="color: #800000">"<span style="color: #800000">xxxx<span style="color: #800000">"<span style="color: #000000">
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)

相关文章

Microsoft云包括了Azure、PowerPlatform、Microsoft365、Git...
《WindowsAzurePlatform系列文章目录》 我们在使用AzureAPI...
微软免费使用一年的Azure虚拟机,默认提供了一个64G的磁盘,...
上篇请访问这里做一个能对标阿里云的前端APM工具(上)样本多...
一年一度的MicrosoftBuild终于来了,带来了非常非常多的新技...