Метод copy_blob
не поддерживает подстановочные знаки.
1 . Если вы хотите скопировать указанный шаблон больших двоичных объектов, вы можете отфильтровать большие двоичные объекты в методе list_blobs()
с префиксом (это также не поддерживает подстановочный знак). В вашем случае префикс выглядит как 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, вы можете следовать этому doc . Затем вы пишете собственную команду 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)