如何解决为什么 Python Azure 函数应用程序不将单个文件从存储帐户中的目录复制到目录?
我有一个用 Python 开发的 Azure 函数应用程序,它检查特定文件夹中是否有任何可用的 blob。
如果 blob 存在,循环遍历所有 blob 并将它们复制到同一存储帐户中的另一个目录中。
我有一个代码正在检查文件是否存在,但是当只有一个文件时循环失败容器。不知道为什么。
blob_service_client = BlobServiceClient.from_connection_string(os.getenv('AzureWebJobsStorage'))
container_ref = blob_service_client.get_container_client('container')
blobs = container_ref.list_blobs(name_starts_with='incoming/srcerx/')
blob_list = []
for s in blobs: #blobs have value of a blob,so loop starts
blob_list.append(s)
#use break to make sure only one iteration to avoid iterating all the blobs
break
if len(blob_list) > 0: #length is 1 coming here
fileCount = 0
#move all blobs to dated directory in the same container
for s in blobs: #not entering loop if only one blob is there
print(s.name.replace('incoming/srcerx/',''))
fileCount+=1
moveBlobs(s.name)
我不确定我在这里做错了什么。我用 1000 个文件测试了这段代码,它复制了所有 999 个文件,但留下了一个。
如果有人提出在 Python 中不循环加载所有 blob 的更好主意,那就更好了。
解决方法
使用吹码:
from azure.storage.blob import BlobServiceClient,BlobClient,ContainerClient,__version__
connect_str = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
container_name = "test"
blob_service_client = BlobServiceClient.from_connection_string(connect_str)
container_name = "test"
container_client = blob_service_client.get_container_client(container_name)
blobs = container_client.list_blobs(name_starts_with="incoming/srcerx/")
num = 0
for blob in blobs:
from_blobname = blob.name
from_blob_client = blob_service_client.get_blob_client(container=container_name,blob=from_blobname)
from_blob_url = from_blob_client.primary_endpoint
file_name = from_blobname.replace("incoming/srcerx/","")
to_blobname = "incoming/srcerx2/"+file_name
to_blob_client = blob_service_client.get_blob_client(container=container_name,blob=to_blobname)
to_blob_client.start_copy_from_url(from_blob_url)
num = num + 1
print(num)
以上代码复制所有文件:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。