Python操作阿里云OSS

首先安装阿里云对象存储模块
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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值