Python 基于阿里云的OSS对象存储服务实现本地文件上云框架

Python 基于阿里云的OSS对象存储服务实现将文件上云框架

文章目录

  • Python 基于阿里云的OSS对象存储服务实现将文件上云框架
  • 一、前言
  • 二、阿里云配置
    • 1、获取用户AKEY和AKeySecret
    • 2、创建Bucket
  • 三、Python 阿里云oss上云框架
    • 1、安装oss2依赖库
    • 2、阿里云oss python

一、前言

未来的Py开发者们请上座,在平常开发的时候,经常有本地文件上云的需求,遂写一下这一篇上云文档。

二、阿里云配置

在阿里云注册一个账户
购买对象存储OSS资源包:对象存储 OSS 资源包(40GB存储 5块)在这里插入图片描述
购买了服务之后,下面就是怎么使用这个OSS对象存储服务了

1、获取用户AKEY和AKeySecret

(1)点击头像–>AccessKey管理
在这里插入图片描述
(2)点击创建AccessKey
在这里插入图片描述
保存生成的AccessKey ID、AccessKey Secret

2、创建Bucket

阿里云oss Bucket官网
创建Bucket在这里插入图片描述
保存存储空间名称和Endpoint
在这里插入图片描述
注:到现在你就拿到了四个配置数据:accessKeyId、accessKeySecret、bucketName、endpoint。

三、Python 阿里云oss上云框架

本框架只涉及五个基本需求:文件上传、文件下载、生成文件下载直链、文件下载、文件查询

有更多业务需求的可以参考:阿里云官方Oss的API文档

1、安装oss2依赖库

pip install oss2

更详细参考:oss2 Github仓库

2、阿里云oss python

阿里云相关Python代码如下
ps:init部分是参考,需要你将之前拿到的数据填进出。

# -*- coding:utf-8 -*-
"""
@Author: 风吹落叶
@Contact: waitKey1@outlook.com
@Version: 1.0
@Date: 2024/6/8 20:33
@Describe: 
"""

import oss2
class AliyunOss():
    def __init__(self):
        '''
        :param self:
        :return:
        :des: # 1、信息初始化
        '''
        self.accessKeyId='LTAI5tKozVqR28pgPw64'            # 从阿里云查询到的 AccessKey 的ID
        self.accessKeySecret="xBFoqMyGQmM5sm7EIkWwVbuQkcQ"  # 从阿里云查询到的 AccessKey 的Secret
        # 使用代码嵌入RAM用户的访问密钥配置访问凭证
        auth=oss2.Auth(self.accessKeyId,self.accessKeySecret)
        self.endpoint='oss-cn-beijing.uncs.com'  # 阿里云从Bucket中查询到的endpoint
        self.bucketName='test2406'  # 阿里云从Bucket中查询到的Bucket的名称

        # 2、bucket 配置创建
        self.bucket=oss2.Bucket(auth,self.endpoint,self.bucketName) # 填写Bucket名称

    def putFile(self,outFile,localFile):
        """
        :param localFile: 本地文件路径
        :param outFile:   云存储路径
        :return:          访问链接
        """
        # 本地文件上传oss
        self.bucket.put_object_from_file(outFile, localFile)
        return "https://{}.{}/{}".format(self.bucketName, self.endpoint, outFile)

    def loadFile(self,outFile,localFile):
        """
        :param localFile: 本地文件路径
        :param outFile:   云存储路径
        """
        # oss下载文件到本地
        self.bucket.get_object_to_file(outFile,localFile)

    def delFile(self,outFile):
        """
        :param outFile:   云文件存储路径
        """
        # oss 删除云文件
        self.bucket.delete_object(outFile)

    def getFileUrl(self,outFile):
        '''
        :param outFile: 云存储文件地址
        :return:
        '''
        return "https://{}.{}/{}".format(self.bucketName, self.endpoint, outFile)

    def findFile(self,prefix='',marker='',max_keys=''):
        """
        :param prefix:限制返回的存储空间名称必须以prefix作为前缀。如果不指定该参数,则返回所有存储空间。
        :param marker:限制结果从marker之后按字母排序的第一个开始返回。如果不指定该参数,则从头开始返回数据。
        :param max_keys:限定此次返回存储空间的最大个数。取值范围:1~1000 、默认值:100
        :return: 列举满足指定条件的存储空间。
        """
        objs={}
        for obj in oss2.ObjectIterator(self.bucket,prefix=prefix,marker=marker,max_keys=max_keys):
            objs[obj.key]=obj.size//1000
        return objs

if __name__=="__main__":
    oss=AliyunOss()
    # 1、 文件上传演示
    localfile='./test.png'
    outfile='img/test.png'
    url=oss.putFile(outfile,localfile)
    print('上传文件下载直链:',url)

    # 2、 文件下载演示
    outfile = 'img/test.png'
    localfile = './test_download.png'
    oss.loadFile(outfile, localfile)

    # 3、 文件查询演示
    obj = oss.findFile()
    print(obj)

    # 4、文件生成直链
    url=oss.getFileUrl(outfile)
    print('文件url:',url)

    # 5、 文件删除
    # outfile = 'img/test.png'
    # oss.delFile(outfile)
    # obj = oss.findFile()
    # print('删除后空间',obj)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/692743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 中的case-when

什么是 case-when case-when 是一种 sql 语句中的语法结构,结构如下: case 字段名 when 值 then 字段名|值 ... else 字段名|值 end case when 主要用于数据的 行列转换(把一列数据转换为多列) 前置条件: -- 表…

基于统一二维电子气密度表达式的通用MIS-HEMT紧凑模型

来源:A Compact Model for Generic MIS-HEMTs Based on the Unified 2DEG Density Expression(TED 14年) 摘要 本文提出了一种针对二维电子气(ns)密度和费米能级(E_f)的解析表达式&#xff0c…

【Pytorch】计算机视觉项目——卷积神经网络TinyVGG模型图像分类(如何使用自定义数据集)

目录 一、前言二、工作流程回顾三、详细步骤流程1. 环境配置2. 数据准备数据集下载数据存储结构&路径查看图片 3. 数据转换4. 自定义数据集(Custom Dataset )4.1 方法一:使用ImageFolder加载数据集信息查看张量转图片创建DataLoader 4.2 …

使用Python创建Word文档

使用Python创建Word文档 安装python-docx库创建Word文档代码效果 在这篇文章中,我们将介绍如何使用 Python创建一个Word文档。首先,我们需要安装python-docx库,然后通过一段简单的代码示例展示如何创建和编辑Word文档。 安装python-docx库 …

【Linux】进程(9):进程控制1

大家好,我是苏貝,本篇博客带大家了解Linux进程(9)进程控制1,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1 fork函数2 进程终止(A)终止是…

设计模式-策略模式(行为型)

行为型-策略模式 了解策略模式 策略模式是一种行为型设计模式,在策略模式中定义了一系列算法或者策略,并将这些策略封装到独立的类中,使得可以相互替换。在使用时,可以指定响应的策略使用。 角色 策略接口:对于某种…

免费使用GPT-4生成图片的方法

写在前言 hello,大家好,我是一点,喜欢编程,目前持续在关注AI领域的发展,希望可以结交一些有意思的朋友。 大家可以关注我的公号:【一点sir】,了解更多文章,希望可以和你们成为朋友…

10 设备树

掌握设备树是 Linux 驱动开发人员必备的技能! 1、什么是设备树 新版本 Linux 中,ARM 相关的驱动全部采用了设备树。Linux-4.1.15 支持设备树。我们了解一下设备树的起源、重点学习一下设备树语法。 设备树:Device Tree,就是“设备”和“树”,描述设备树的文件叫做 DTS(…

Ubuntu硬盘分区、挂载、修改用户权限

使用命令查看硬盘情况 sudo fdisk -l 可以看到这里有个未分区的4T硬盘 如:sdb 这样的是硬盘 sdb1 sdb2 这样的是分区,现在还没分区 分区 sudo parted /dev/sdb (sdb 是要挂载的硬盘) 输入一下命令分区: mklabel gpt (创建分区表) mkpart p…

天工开物 #14 分析时序数据:从 InfluxQL 到 SQL 的演变

近年来,时序数据的增长是 Data Infra 领域一个不容忽视的趋势。这主要得益于万物互联带来的自然时序数据增长,以及软件应用上云和自身复杂化后的可观测性需求。前者可以认为是对联网设备的可观测性,而可观测性主要就建构在设备或应用不断上报…

172.二叉树:左叶子之和(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr, right(nullptr) {}* Tree…

深入理解C语言:main函数的奥秘

在C语言中,main函数是每个程序的入口点,起着至关重要的作用。本文将深入探讨main函数的工作原理,包括其参数、返回值、以及如何从main启动程序的执行。通过实际代码示例,读者将更深入地理解main函数在C语言编程中的核心地位。 第一…

APP单页分发源码下载安卓苹果自动识别apk描述文件免签自动安装

下载地址:APP单页分发源码下载安卓苹果自动识别apk描述文件免签自动安装

Ubuntu虚拟机使用纯命令行对根分区进行扩展

Ubuntu虚拟机使用纯命令行对根分区进行扩展 前排提示 因为Ubuntu再安装时,根分区是没有使用LVM进行磁盘管理的,所以如果想扩展根分区,我们不得不使用另外一种暴力的方法。简单来说就是利用fdisk删除原来的根分区再基于原来的起始块号重新建…

使用C++结合OpenCV进行图像处理与分类

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

LabVIEW与PLC的区别

LabVIEW和PLC是工业自动化领域中常见的两种控制和测控方案,各自有独特的优点和适用场景。本文将从多角度比较两者,帮助用户在选择控制系统时做出更明智的决策。 技术背景 LabVIEW LabVIEW是由National Instruments公司开发的图形化编程环境&#xff0…

C# 界面控件中英切换

编程软件:VS 2015 需求:界面有两个按钮,点击可以将界面上所有控件进行不同语言的切换。 一共两种方案,个人认为第二种方案使用范围更广(这里以中英文切换为例)。 方案一:如图所示,建立两个资源文件 将所需控件的中英…

大厂真实面试题(一)

滴滴大数据sql 取出累计值与1000差值最小的记录 1.题目 已知有表t_cost_detail包含id和money两列,id为自增,请累加计算money值,并求出累加值与1000差值最小的记录。 2.分析 本题主要是想找到累加值域1000差距最小的记录,也就是我们要对上述按照id进行排序并且累加,并…

Python 机器学习 基础 之 【实战案例】中药数据分析项目实战

Python 机器学习 基础 之 【实战案例】中药数据分析项目实战 目录 Python 机器学习 基础 之 【实战案例】中药数据分析项目实战 一、简单介绍 二、中药数据分析项目实战 三、数据处理与分析实战 1、数据读取 2、中药材数据集的数据处理与分析 2.1数据清洗 2.2、 提取别…

如何微调 Llama 3 进行序列分类?

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…