python - 动态重命名 Azure Blob(如果已上传)

标签 python azure azure-blob-storage

我有一组文件(未在本地保存)需要上传到 Azure Blob 存储并每天更新。

(1) 有一定数量的同名文件(内容不同),应保存为单独的 blob。
(2) 更新的文件集应覆盖相应的前一天 blob。

有没有办法检查 blob 是否已存在并通过附加数字动态重命名它(由于(2)而无法附加时间戳)?

我正在使用以下函数上传我的所有文件:

def azure_upload_file(block_blob_service, container, local_file_path, local_file_name):
    logger = logging.getLogger('data')

    isExist = block_blob_service.exists(container, local_file_name)

    blobname = os.path.splitext(local_file_name)[0]
    blobext =  os.path.splitext(local_file_name)[1]


    if isExist is True:
        blob_file_name = '{}_{}{}'.format(blobname, '#', blobext)
    else:
        blob_file_name = local_file_name
    full_path_to_file =os.path.join(local_file_path, local_file_name)

    blob = block_blob_service.create_blob_from_path(container, blob_file_name, full_path_to_file)
    blob_url = block_blob_service.make_blob_url(container, blob_file_name)

    logger.info('Uploaded file {} to azure blob storage'.format(blob_file_name))
    os.unlink(full_path_to_file)

    return blob_url

示例:

日期:2019 年 11 月 19 日 - 初始上传

文件名.ext -> blob
1. abcd.zip -> abcd.zip
2. abcd.zip -> abcd(1).zip
3. abcd.zip -> abcd(2).zip
4. defg.csv -> defg.csv

等等..

我想要的只是以某种方式智能地填充代码中的“#”,这样每当我拥有更新的文件集时,我就已经知道应该将文件覆盖到哪个 blob。

即,如果我在 2019 年 11 月 20 日有一组新文件

示例:

日期:2019 年 11 月 20 日 - 第二次上传

新文件名.ext -> blob
1. abcd.zip -> abcd.zip
2. abcd.zip -> abcd(1).zip
3. abcd.zip -> abcd(2).zip
4. defg.csv -> defg.csv

等等..

我已经浏览过类似的文章:
1.Azure blob upload rename if blob name exist
2.Faster Azure blob name search with python?

这两个都不能解决我的问题。想知道是否有一种有效且简单的方法可以实现这一目标?

最佳答案

如果您考虑拥有同一文件的多个版本,则只需在 blob 名称中附加一个时间戳即可:

  • abcd20191118131800.zip
  • abcd20191118131900.zip

按文件名(升序/降序)排序将为您提供最新/最旧的文件

关于python - 动态重命名 Azure Blob(如果已上传),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921410/

相关文章:

python - 将字符串表达式转换为数学表达式?

python - 字段错误: Cannot resolve 'publish_year' into field

rest - Azure 虚拟机和 REST api 出现问题

azure - 从数据工厂在 Azure VM 中执行 SSIS 包

azure - Azure 应用程序注册时的 API 权限问题

c# - 在 Azure Blob 存储中使用 Etag 进行乐观锁定不起作用

python - 使用 python 和 sql 进行 Web 开发

python - web.py url 处理 : multiple subapplication redirection

azure - 上传 blob 文件以解析它并在 sql azure 中插入行

azure - 使用 Postman 更新 azure 附加 blob 存储