Azure   发布时间:2019-11-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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

title="Python 操作 Azure Blob Storage" alt="Python 操作 Azure Blob Storage" src="https://cn.js-code.com/res/2019/02-09/09/d3fb9e5b62a0d05a23330684e2453bd8.png" >

Python 操作 Azure Blob Storage

看代码操作的结果:

title="Python 操作 Azure Blob Storage" alt="Python 操作 Azure Blob Storage" src="https://cn.js-code.com/res/2019/02-09/09/35c1273a6df68623701a15a224f4cf82.png" >

create_blob_from_path create_blob_from_stream create_blob_from_bytes create_blob_from_text

azure.storage.blob service azure.storage.blob Tings @H_152_0@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">'))

Tings,主要是指定文件的类型。注意 create_blob_from_path 方法的第二个参数,我们需要为新的 blob 对象指定一个名字。第一个参数是目标 Container, 第三个参数是要上传的本地文件路径。执行上面的脚本,会把本地的一张壁纸 cortana-wallpaper.jpg 上传到 Azure Blob Container 中:

title="Python 操作 Azure Blob Storage" alt="Python 操作 Azure Blob Storage" src="https://cn.js-code.com/res/2019/02-09/09/810633fee8c58f0c22c198e91c14c800.png" >

https://nickpsdk.blob.core.windows.net/nickcon/myblobcortana.jpg

title="Python 操作 Azure Blob Storage" alt="Python 操作 Azure Blob Storage" src="https://cn.js-code.com/res/2019/02-09/09/86678714a5364b91042d775ba6f01873.png" >

是这样的,默认情况下我们创建的 Blob Container 和 Blob 对象都是私有的,也就是必须通过账号和 access key 才能访问。如果你要想让内容变成大家都能访问的公共资源,可以在创建时指定为 PublicAccess。也可以在创建完成后修改它的属性为 PublicAccess。下面我们把 nickcon Container 设置为 PublicAccess:

azure.storage.blob service 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)

title="Python 操作 Azure Blob Storage" alt="Python 操作 Azure Blob Storage" src="https://cn.js-code.com/res/2019/02-09/09/b92389ea8c79302b869cb411492847ba.png" >

你的 Blob Container 中放隐私照了哦!

generator = blob_service.lisT_Blobs( blob (blob.Name)

T_Blobs 方法可以获得 Container 中的所有 Blob 对象。上面的代码打印了所有 Blob 对象的名称。

T_Blob_to_path 方法,其它的用法类似:

blob_service.geT_Blob_to_path(,,)

blob_service.delete_blob(,)

是需要的。下面的代码会把一个 Azure Storage Account 中的所有 Blob Container 中的内容备份到本地磁盘上:

azure.storage.blob service @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)

需要注意一点,blob.name 包含了文件在 container 中的目录。比如一个文件在 Blob Container 中的路径为 abc/test.txt,那么它的 blog.name 就是 abc/test.txt。要保持文件在 Blob Container 的名称及路径就要在本地创建对应的目录结构。

大佬总结

以上是大佬教程为你收集整理的Python 操作 Azure Blob Storage全部内容,希望文章能够帮你解决Python 操作 Azure Blob Storage所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: