将空间1的文件迁移到空间2
import json
from qiniu import BucketManager
from qiniu import Auth
from loguru import logger
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
delimiter = '/'
marker = None
bucket = BucketManager(q)
for i in range(0, 211060, limit):
ret, eof, result_info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
marker_new = json.loads(result_info.text_body).get('marker')
if marker_new:
marker = marker_new
else:
logger.error(result_info)
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)
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)
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)