文件迁移"/>
python实现七牛云不同空间文件迁移
python实现七牛云不同空间文件迁移
- 将空间1的文件迁移到空间2
将空间1的文件迁移到空间2
import json
from qiniu import BucketManager
from qiniu import Authfrom 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 = Nonebucket = 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_newelse: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, infoif __name__ == '__main__':batch_query(bucket_name)
更多推荐
python实现七牛云不同空间文件迁移
发布评论