#!/usr/bin/python#-*-coding:utf-8-*fromboto.s3.keyimportKeyfromboto.s3.connectionimportS3Connectionimportos########################################################################user="xxxxxxxxx"aws_access_key_id="xxxxxxxxxxxxxx"aws_secret_access_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"host_ip="xx.xx.xx.xx"port=9000########################################################################'''OrdinaryCallingFormat:自己安装有s3服务的服务器一般用这个SubdomainCallingFormat:host名中含有amazon类似的词语的一般用这个'''classS3(object):def__init__(self,):self.conn=S3Connection(aws_access_key_id=aws_access_key_id,aws_secret_access_key=aws_secret_access_key,host=host_ip,port=port,is_secure=False,calling_format='boto.s3.connection.OrdinaryCallingFormat')self.bucket_name='bucket_test'try:self.bucket=self.conn.get_bucket(self.bucket_name)except:self.bucket=self.conn.create_bucket(self.bucket_name)defupload_packetage(self,package_path):package_name=os.path.basename(package_path)package_key=Key(self.bucket,package_name)ifpackage_key.exists():package_key.delete()else:package_key.set_contents_from_filename(package_path)returndefrename_package(self,package_old_name,package_new_name):package_old_key=Key(self.bucket,package_old_name)package_new_key=Key(self.bucket,package_new_name)ifpackage_old_key.exists()and(notpackage_new_key.exists()):package_old_key.copy(self.bucket,package_new_key)ifpackage_new_key.exists():package_old_key.delete()returndefdelete_packetage(self,package_name):package_key=Key(self.bucket,package_name)ifpackage_key.exists():package_key.delete()else:raiseValueError('package:%sarenotexist'%package_name)returnif__name__=="__main__":s3=S3()#s3.upload_packetage("/tmp/text.txt")s3.delete_packetage("text.txt")#s3.rename_package("text.txt","text1.txt")pass

阅读全文