本文整理汇总了Python中qiniu.BucketManager.copy方法的典型用法代码示例。如果您正苦于以下问题:Python BucketManager.copy方法的具体用法?Python BucketManager.copy怎么用?Python BucketManager.copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qiniu.BucketManager
的用法示例。
在下文中一共展示了BucketManager.copy方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from qiniu import BucketManager [as 别名]
# 或者: from qiniu.BucketManager import copy [as 别名]
class QiniuBucketManager:
def __init__(self, auth, bucket):
"""
@param auth: qiniu auth object
@param bucket: bucket name
"""
self.auth = auth
self.bucket = bucket
self.bktmanager = BucketManager(auth)
self.upload_token = auth.upload_token(bucket)
def data_info(self, key):
"""
return information with keys {fsize, hash, mimetype, putTime} else
raise `QiniuReadDataError` with status_code and error message
"""
r, info = self.bktmanager.stat(self.bucket, key)
if not r:
raise QiniuReadDataError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
else:
return r
def push_data(self, key, data):
"""
return hash code if upload sucess else raise `QiniuPushDataError`
with status_code and error message
"""
ret, info = put_data(self.upload_token, key, data)
if not ret:
raise QiniuPushDataError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
else:
return ret['hash']
def delete_data(self, key):
"""
delete data `key`
"""
_, info = self.bktmanager.delete(self.bucket, key)
if info.status_code != 200:
raise QiniuError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
def batch_delete_data(self, keys):
if keys:
ops = build_batch_delete(self.bucket, keys)
_, info = self.bktmanager.batch(ops)
if info.status_code != 200:
msg = ''
for e in info.text_body:
msg += msg + ';' + 'status_code:{0}, error:{1}'.format(e)
raise QiniuError(msg)
def copy_data_to(self, sdata, dbucket, ddata):
"""
copy data `sdata` in this bucket to destination bucket `dbucket` with name `ddata`
"""
_, info = self.bktmanager.copy(self.bucket, sdata, dbucket, ddata)
if info.status_code != 200:
raise QiniuError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
def copy_data_from(self, sbucket, sdata, ddata):
"""
copy data from `sdata` in bucket `sbucket` to this bucket with name `ddata`
"""
_, info = self.bktmanager.copy(sbucket, sdata, self.bucket, ddata)
if info.status_code != 200:
raise QiniuError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
def move_data_to(self, sdata, dbucket, ddata):
"""
move data `sdata` in this bucket to destination bucket `dbucket` with name `ddata`
"""
_, info = self.bktmanager.move(self.bucket, sdata, dbucket, ddata)
if info.status_code != 200:
raise QiniuError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
def move_data_from(self, sbucket, sdata, ddata):
"""
move data from `sdata` in bucket `sbucket` to this bucket with name `ddata`
"""
_, info = self.bktmanager.move(sbucket, sdata, self.bucket, ddata)
if info.status_code != 200:
raise QiniuError('status_code:{0}, error:{1}'.format(info.status_code,
info.text_body))
def datas(self, prefix=None, limit=None, marker=None):
"""
list datas in bucket with keys fsize, hash, key, mimeType, puttime of each data
"""
def list_files(marker, limit):
k = {'bucket':self.bucket}
if limit:
k['limit'] = limit
if prefix:
#.........这里部分代码省略.........
示例2: Auth
# 需要导入模块: from qiniu import BucketManager [as 别名]
# 或者: from qiniu.BucketManager import copy [as 别名]
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth
from qiniu import BucketManager
access_key = "WSzjNxJFwZ2VuCo_L0BvSVTyNlX-aTonE-r_kn2R"
secret_key = "qbcgCI500pJrsFzjDO13d9-8FbgqbgMqCnp9MdWd"
bucket_name = "elfin"
#初始化Auth状态
q = Auth(access_key, secret_key)
#初始化BucketManager
bucket = BucketManager(q)
#你要测试的空间, 并且这个key在你空间中存在
bucket_name = 'elfin'
#将文件从文件key 移动到文件key2,可以实现文件的重命名 可以在不同bucket移动
bucket_name2 = 'twitter'
key2 = 197434
with open("hey.txt") as f:
for line in f:
key = line.strip("\n")
print key, key2
ret, info = bucket.copy(bucket_name, key, bucket_name2, str(key2))
assert ret == {}
key2 += 1
示例3: Qiniu
# 需要导入模块: from qiniu import BucketManager [as 别名]
# 或者: from qiniu.BucketManager import copy [as 别名]
class Qiniu(object):
def __init__(self, _ak, _sk):
import os
from qiniu import Auth, BucketManager
if os.name in ['nt']:
os.environ["HOME"] = r"../"
self.q = Auth(_ak, _sk)
self.bucket = BucketManager(self.q)
self.domain = "images.miasun.cn"
def upload_file_by_file(self, _bucket_name, local_file, key=None):
import os
from qiniu import put_file
if not os.path.exists(local_file):
print("文件不存在,请检查文件地址!")
return False
if key is None:
# 未传入key时,使用文件名作为key
key = os.path.split(local_file)[-1]
token = self.q.upload_token(bucket=_bucket_name, key=key)
ret, info = self.get_file_info(bucket_name, key)
if ret:
print("已上传: http://{domain}/{key}".format(domain=self.domain, key=key))
else:
ret, info = put_file(token, key, local_file)
return ret, info
def upload_files_by_dir(self, _bucket_name, dir_):
failed = []
for dirpath, dirnames, filenames in os.walk(dir_):
for filename in filenames:
local_file = os.path.join(dirpath, filename)
key = local_file[len(os.path.split(dir_)[0]) + 1:].replace("\\", "/")
if self.is_file_uploaded(bucket_name, key):
print("已上传: http://{domain}/{key}".format(domain=self.domain, key=key))
continue
ret, info = self.upload_file_by_file(_bucket_name, local_file, key)
if ret is None:
failed.append(key)
print("上传失败:{key}".format(key=key))
else:
print("上传成功:\n![{filename}](http://{domain}/{key}) \n".format(
filename=filename,
key=key,
domain=self.domain
))
return failed
def upload(self, bucket_name, to_upload):
if os.path.isfile(to_upload):
return self.upload_file_by_file(bucket_name, to_upload)
elif os.path.isdir(to_upload):
return self.upload_files_by_dir(bucket_name, to_upload)
else:
return False
def upload_and_callback(self, bucket_name, local_file, key=None):
import os
from qiniu import put_file
if not os.path.exists(local_file):
print("文件不存在,请检查文件地址!")
return False
if key is None:
key = os.path.split(local_file)[-1]
policy = {
"callbackUrl": "http://your.domain.com/callback.php",
"callbackBody": "filename=$(fname)&filesize=$(fsize)"
}
token = self.q.upload_token(bucket=bucket_name, key=key, policy=policy)
ret, info = put_file(token, key, local_file)
return ret, info
def get_file_info(self, bucket_name, key):
return self.bucket.stat(bucket_name, key)
def is_file_uploaded(self, bucket_name, key):
ret, info = self.get_file_info(bucket_name, key)
if ret is None:
return False
else:
return True
def move_file(self, old_bucket, old_key, new_bucket, new_key):
return self.bucket.move(old_bucket, old_key, new_bucket, new_key)
def copy_file(self, old_bucket, old_key, new_bucket, new_key):
return self.bucket.copy(old_bucket, old_key, new_bucket, new_key)
def delete_file(self, bucket_name, key):
return self.bucket.delete(bucket_name, key)
示例4: Auth
# 需要导入模块: from qiniu import BucketManager [as 别名]
# 或者: from qiniu.BucketManager import copy [as 别名]
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth
from qiniu import BucketManager
access_key = 'Access_Key'
secret_key = 'Secret_Key'
#初始化Auth状态
q = Auth(access_key, secret_key)
#初始化BucketManager
bucket = BucketManager(q)
#你要测试的空间, 并且这个key在你空间中存在
bucket_name = 'Bucket_Name'
key = 'python-logo.png'
#将文件从文件key 复制到文件key2。 可以在不同bucket复制
key2 = 'python-logo2.png'
ret, info = bucket.copy(bucket_name, key, bucket_name, key2)
print(info)
assert ret == {}
示例5: Auth
# 需要导入模块: from qiniu import BucketManager [as 别名]
# 或者: from qiniu.BucketManager import copy [as 别名]
__author__ = 'yuandian'
#coding=utf-8
# flake8: noqa
from qiniu import Auth
from qiniu import BucketManager
access_key = 'nyWhBA7y_0py9Kbopsi7vuZFcvhbBv5MnNe9DH0G'
secret_key = 'DQNeMFYIf3WTNfuOVaTZqQpdv7l2XwHPmXgyFwJH'
q = Auth(access_key, secret_key)
bucket = BucketManager(q)
bucket_name_src = 'image/custom/01/m/dy/DAA156A/B_64N1_0000_0000_0000_0000.png'
bucket_name_tar = 'image/custom/01/m/dy/DAA156A/B_64N0_0000_0000_0000_0000.png'
# 复制文件
key = 'redcollar'
ret, info = bucket.copy('redcollar', bucket_name_src, 'redcollar', bucket_name_tar)
print(info)