#! /usr/bin/env python # -*- coding: utf-8 -*- import argparse import qiniu from qiniu.services.storage import bucket as bucketop import time class DelByPrefix(object): """docstring for DelByPrefix""" def __init__(self, ak, sk): q = qiniu.Auth(ak, sk) self.bucket = qiniu.BucketManager(q) def run(self, bucket, prefix): eof = False marker = None while not eof: ret, eof, info = self.bucket.list(bucket, prefix=prefix, marker=marker, limit=1000) # print(ret) marker = ret.get('marker') keys = [stat['key'] for stat in ret.get('items')] ops = qiniu.build_batch_delete(bucket, keys) # print(ops) self.bucket.batch(ops) def op_item(bucket, src, i): return bucketop._build_op('copy', qiniu.entry(bucket, src), qiniu.entry(bucket, src+str(i))) def copy_gen(ak, sk, bucket_name): q = qiniu.Auth(ak, sk) key = 'copy1' data = 'copy test' token = q.upload_token(bucket_name, key) ret, info = qiniu.put_data(token, key, data) print(ret) bucket = qiniu.BucketManager(q) ops = [op_item(bucket_name, key, i) for i in range(0, 2000)] ret, info = bucket.batch(ops) def main(): parser = argparse.ArgumentParser(prog='haikang') parser.add_argument('-ak', type=str, help='access key') parser.add_argument('-sk', help='secret key') parser.add_argument('-bucket', help='bucket name') parser.add_argument('-prefix', help='prefix') args = parser.parse_args() copy_gen(args.ak, args.sk, args.bucket) deleter = DelByPrefix(args.ak, args.sk) start = time.time() deleter.run(args.bucket, args.prefix) end = time.time() print(end-start) if __name__ == '__main__': main()