首先安装阿里云对象存储模块
pip install oss2
#!/usr/bin python
# -*- coding: utf-8 -*-
# 上传目录到oss 上
import os
import oss2
import sys
class OssMange(object):
def __init__(self,AccessKeyId,AccessKeySecret,Endpoint,Bucket):
self.AccessKeyId = AccessKeyId
self.AccessKeySecret = AccessKeySecret
self.Endpoint = Endpoint
self.Bucket = Bucket
self.auth = oss2.Auth(AccessKeyId, AccessKeySecret)
self.bucket = oss2.Bucket(self.auth, Endpoint,self.Bucket)
# bucket_info = bucket.get_bucket_info()
def delete_file(self,bucket):
for obj in oss2.ObjectIterator(self.bucket):
if obj.is_prefix():
print('delete directory: ' + obj.key)
else:
print('delete file: ' + obj.key )
# self.bucket.delete_object(obj.key)
def push_object(self,path_dir):
list = os.listdir(path_dir)
for i in range(0, len(list)):
path = os.path.join(path_dir, list[i])
if os.path.isfile(path):
file_name = path.replace('\\', '/') # 自动转格式
# 这个rootdir只能是一开始的上传目录名称,否则上传到oss上就都是根目录下了
object_name = file_name.replace(rootdir + '/', '')
# print('put object: ' + object_name)
self.bucket.put_object_from_file(object_name,file_name)
else:
self.push_object(path.replace('\\', '/'))
if __name__ == '__main__':
AccessKeyId = "xxx"
AccessKeySecret = "xxx"
Endpoint = "http://oss-cn-beijing.aliyuncs.com"
if len(sys.argv) != 3:
sys.exit("eg: %s localfilepath bucket!" % sys.argv[0])
if not os.path.isdir(sys.argv[1]):
sys.exit("%s 目录不存在,请重新输入!" % sys.argv[1])
path_dir = sys.argv[1]
Bucket = sys.argv[2]
rootdir = path_dir
bituan = OssMange(AccessKeyId,AccessKeySecret,Endpoint,Bucket)
# bituan.delete_file(Bucket)
bituan.push_object(path_dir)