使用 python 将文件从 blob 容器复制到另一个容器

闲人

我正在尝试将“特定文件”从一个文件夹复制到另一个文件夹。当我尝试在最后使用通配符 (*) 时,复制不会发生。

但是,如果我只提供文件夹名称,则该源文件夹中的所有文件都会被复制到目标文件夹中,而不会出现任何问题。

问题:使用通配符时不会发生文件复制。你能帮我解决这个问题吗?

def copy_blob_files(account_name, account_key, copy_from_container, copy_to_container, copy_from_prefix):
  try:
    blob_service = BlockBlobService(account_name=account_name, account_key=account_key)
    files = blob_service.list_blobs(copy_from_container, prefix=copy_from_prefix)

    for f in files:
      #print(f.name)
      blob_service.copy_blob(copy_to_container, f.name.replace(copy_from_prefix,""), f"https://{account_name}.blob.core.windows.net/{copy_from_container}/{f.name}")
  except:
    print('Could not copy files from source to target')

copy_from_prefix = 'Folder1/FileName_20191104*.csv'
copy_blob_files (accountName, accesskey, copy_fromcontainer, copy_to_container, copy_from_prefix)
伊万杨 |

copy_blob方法不支持通配符。

1 .如果要复制指定模式的blob,可以在list_blobs()方法中过滤带有前缀的blob (它也不支持通配符)。在您的情况下,前缀看起来像copy_from_prefix = 'Folder1/FileName_20191104',请注意没有通配符。

下面的代码在我身边工作,所有指定的模式文件都是副本并替换了 blob 名称:

from azure.storage.blob import BlockBlobService

account_name ="xxx"
account_key ="xxx"

copy_from_container="test7"
copy_to_container ="test4"

#remove the wildcard
copy_from_prefix = 'Folder1/FileName_20191104'

def copy_blob_files(account_name, account_key, copy_from_container, copy_to_container, copy_from_prefix):
    try:
        block_blob_service = BlockBlobService(account_name,account_key)
        files = block_blob_service.list_blobs(copy_from_container,copy_from_prefix)
        for file in files:
            block_blob_service.copy_blob(copy_to_container,file.name.replace(copy_from_prefix,""),f"https://{account_name}.blob.core.windows.net/{copy_from_container}/{file.name}")

    except:
        print('could not copy files')

copy_blob_files(account_name,account_key,copy_from_container,copy_to_container,copy_from_prefix)

2 .另一种方式,正如其他人提到的,您可以使用python调用azcopy(您可以使用azcopy v10,它只是一个.exe文件)。对于在 azcopy 中使用通配符,您可以遵循此文档然后你编写你自己的 azcopy 命令,最后,编写你的 python 代码如下:

import subprocess

#the path of azcopy.exe, v10 version
exepath = "D:\\azcopy\\v10\\azcopy.exe"

myscript= "your azcopy command"

#call the azcopy command
subprocess.call(myscript)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 Azure 数据工厂将 CSV 文件从 blob 容器复制到另一个 blob 容器?

如何使用Azure Blob存储SDK将Blob从一个容器复制到另一个容器

Python:如何将Azure Blob从一个容器移动或复制到另一个容器

无法将Blob从一个容器复制到另一个容器

将$ Logs容器数据复制到另一个Blob位置

如何将特定大小的文件从一个 blob 容器复制到另一个 blob 容器?

使用python将文件复制到另一个文件夹

通过运行手册将一个 blob 容器数据复制到 azure 中的另一个 blob 容器中

使用python将xlsx文件复制到另一个麻烦

如何将Azure中的Blob复制到带有节点sdk的另一个容器

使用 terraform 将容器映像从一个 Google 项目复制到另一个项目

将Blob从一个目录复制到同一容器Azure存储中的另一个目录

如何使用python将某些csv文件列复制到另一个csv文件中?

使用Python将子文件夹中的图像复制到另一个文件夹

在python中使用条件将列表的元素复制到另一个列表

如何使用 Python xlwings 将一个单元格从一个文件复制到另一个文件

将python与mobaxterm结合使用可将25个随机文件从一个文件夹复制到另一个文件夹

Azure函数(C#):如何将大量文件从Blob容器A复制到另一个Blob容器B?(功能在10分钟内超时)

使用python将具有特定名称的文件从一个文件夹复制到另一个文件夹

使用python将某些文件从一个文件夹复制到另一个文件夹

使用python仅将更新/新文件从一个文件夹复制到另一个文件夹

使用python将特定行从一个csv复制到另一个

如何使用Python将zipfile从一个文件夹复制到另一个文件夹

使用python将列从一个excel文件复制到另一个excel文件表

Azure 使用 rest API 将 blob 从一个存储帐户复制到同一订阅中的另一个

使用.Net API startCopy将页面Blob从一个存储帐户复制到另一个存储帐户

使用python将近似字符串匹配从Excel复制到另一个Excel文件

使用Python将整个Word文档(包括表格)复制到另一个文档中

如何使用Java / REST将Azure Blob从一个存储容器移动到另一个存储容器?