Skip to content

Instantly share code, notes, and snippets.

@forrest-mao
Forked from longbai/run.py
Last active August 29, 2015 14:12
Show Gist options
  • Save forrest-mao/65e0392955e631f6afbb to your computer and use it in GitHub Desktop.
Save forrest-mao/65e0392955e631f6afbb to your computer and use it in GitHub Desktop.
#! /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()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment