python实现七牛云不同空间文件迁移

python实现七牛云不同空间文件迁移

将空间1的文件迁移到空间2

import json
from qiniu import BucketManager
from qiniu import Auth

from loguru import logger

#需要填写你的 Access Key 和 Secret Ke
access_key = 'xxxxxxxxxxx'
secret_key = 'xxxxxxxxxxx'

bucket_name = '源空间名称'



def batch_query(bucket_name):
    """查询"""

    q = Auth(access_key=access_key, secret_key=secret_key)
    prefix = ''  # 搜索文件的前缀
    limit = 1000  # 每次拉取数量,最大1000
    # 列举出除'/'的所有文件以及以'/'为分隔的所有前缀
    delimiter = '/'  # None
    # 标记
    marker = None
    bucket = BucketManager(q)
    for i in range(0, 211060, limit):

        ret, eof, result_info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
        # logger.info(f"{marker} => {ret}")

        marker_new = json.loads(result_info.text_body).get('marker')
        if marker_new:
            marker = marker_new
        else:
            logger.error(result_info)

        # logger.info(ret)
        logger.info(f"{i} => {result_info} => {ret}")

        for key in dict(ret.items())['items']:
            imgKey = key['key'] # 推送的时间戳
            putTime = key['putTime']  # 推送的时间戳
            mimeType = key['mimeType']  # 文件类型
            fsize = key['fsize']  # 文件大小
            ## 只迁移图片
            if str(imgKey).endswith('.jpeg'):
                ret_, info_ = qiniu_copy_file(q, bucket_name, imgKey, '新的空间名称2', imgKey)
                # logger.info(f"{i} => {img_key} => {info_.status_code}")


def qiniu_copy_file(q, bucket_name1, key1, bucket_name2, key2):
    """移动文件
    Args:
        bucket:     待操作资源所在空间
        bucket_to:  目标资源空间名
        key:        待操作资源文件名
        key_to:     目标资源文件名
        force:     重复的覆盖

        Returns:
            一个dict变量,成功返回NULL,失败返回{"error": "<errMsg string>"}
            一个ResponseInfo对象
    """
    bucket = BucketManager(q)
    # 将文件从文件key 移动到文件key2,可以实现文件的重命名 可以在不同bucket移动
    ret, info = bucket.copy(bucket=bucket_name1, key=key1, bucket_to=bucket_name2, key_to=key2, force='true')
    return ret, info


if __name__ == '__main__':
    batch_query(bucket_name)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值