【问题标题】:Uploading flat files to Azure Storage Account将平面文件上传到 Azure 存储帐户
【发布时间】:2021-06-13 14:59:10
【问题描述】:

我按照link 的指示进行操作。从运行此命令开始,我完成了将文件上传到存储帐户的所有步骤

setx AZURE_STORAGE_CONNECTION_STRING "12334455"

基本上,我只是从 Microsoft 网站复制了用于上传文件的代码。但是在完成了微软网站上给出的所有要求之后,我仍然面临一些错误。 我写的代码是

import os, uuid
from azure.storage.blob import BlobServiceClient, BlobClient, ContainerClient, __version__

try:
    print("Azure Blob Storage v" + __version__ + " - Python quickstart sample")
    # local_path = "C:\Users\shang\Desktop\Trial"
    # os.mkdir(local_path)
    #
    # # Create a file in the local data directory to upload and download
    # local_file_name = str(uuid.uuid4()) + ".txt"
    # upload_file_path = os.path.join(local_path, local_file_name)
    #
    # # Write text to the file
    # file = open(upload_file_path, 'w')
    # file.write("Hello, World!")
    # file.close()
    upload_file_path = r"C:\Users\shang\Desktop\Trial\Trial.txt"
    local_file_name = "Trial.txt"
    # Create a blob client using the local file name as the name for the blob
    blob_client = BlobServiceClient.get_blob_client(container="testingnlearning", blob=local_file_name)

    print("\nUploading to Azure Storage as blob:\n\t" + local_file_name)

    # Upload the created file
    with open(upload_file_path, "rb") as data:
        blob_client.upload_blob(data)
        # Quick start code goes here

except Exception as ex:
    print('Exception:')
    print(ex)


现在在运行代码时出现错误

TypeError                                 Traceback (most recent call last)
<ipython-input-3-3a6b42061e89> in <module>
----> 1 blob_client = BlobServiceClient.get_blob_client(container="testingnlearning", blob="Trial.txt")

TypeError: get_blob_client() missing 1 required positional argument: 'self'

现在我不知道我做错了什么。如果您能告诉我如何将文本文件上传到 Azure 存储容器,那就太好了。

提前致谢。

【问题讨论】:

    标签: python python-3.x azure azure-blob-storage azure-container-service


    【解决方案1】:

    您收到错误的原因是因为您没有创建BlobServiceClient 的实例并将其用作静态:

    blob_client = BlobServiceClient.get_blob_client(container="testingnlearning", blob=local_file_name)
    

    您想要做的是创建BlobServiceClient 的实例,然后使用该实例。比如:

    blob_service_client = BlobServiceClient.from_connection_string(connect_str)
    blob_client = blob_service_client.get_blob_client(container="testingnlearning", blob=local_file_name)
    

    【讨论】:

    • 谢谢@Gaurav。我认为命令 "setx AZURE_STORAGE_CONNECTION_STRING "12334455" 就足够了。
    • 现在还有一个问题,如果我在制作 blob 服务客户端对象时已经给出了连接字符串,我还需要运行这个命令吗? "setx AZURE_STORAGE_CONNECTION_STRING "12334455""
    • 通过使用这个命令,你实际上是在设置一个环境变量。设置环境变量的好处是您不必在代码中显式设置连接字符串(以防您签入代码或与其他人共享该代码)。
    • 所以,这是你的电话。如果您只是想学习一些东西(即最终您将丢弃此代码),请随时将连接字符串保留在代码中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2017-08-19
    相关资源
    最近更新 更多