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

news2024/11/29 6:31:50

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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++11 列表初始化(initializer_list),pair

1. {} 初始化 C98 中,允许使用 {} 对数组进行初始化。 int arr[3] { 0, 1, 2 };C11 扩大了 {} 初始化 的使用范围,使其可用于所有内置类型和自定义类型。 struct Date {int _year;int _month;int _day;Date(int year, int month, int day):_year(year…

基于某评论的TF-IDF下的LDA主题模型分析

完整代码: import numpy as np import re import pandas as pd import jieba from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.decomposition import LatentDirichletAllocationdf1 pd.read_csv(小红书评论.csv) # 读取同目录下csv文件…

ssm613个性化旅游攻略定制系统设计与实现+jsp【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

【Python教程】1-注释、变量、标识符与基本操作

在整理自己的笔记的时候发现了当年学习python时候整理的笔记,稍微整理一下,分享出来,方便记录和查看吧。个人觉得如果想简单了解一名语言或者技术,最简单的方式就是通过菜鸟教程去学习一下。今后会从python开始重新更新&#xff0…

SQL Chat:从SQL到SPEAKL的数据库操作新纪元

引言 SQL Chat是一款创新的、对话式的SQL客户端工具。 它采用自然语言处理技术,让你能够像与人交流一样,通过日常对话的形式对数据库执行查询、修改、创建及删除操作 极大地简化了数据库管理流程,提升了数据交互的直观性和效率。 在这个框…

【Python】 闭包

什么是闭包 用一句话粗略概况为:在一个函数内,读取外部函数定义的变量的机制。更一般地说,闭包函数是带有状态的函数,状态是指调用环境的上下文,当函数带上了状态就是闭包。 如下代码,在函数f内定义了一个…

IT闲谈-Kylin入门教程

目录 一、引言二、Kylin简介三、环境准备四、安装与配置五、数据导入与建模六、查询与分析七、总结 一、引言 Apache Kylin是一个开源的分布式分析引擎,旨在提供Hadoop/Spark之上的SQL接口及多维分析(OLAP)能力以支持超大规模数据。Kylin通过…

折腾日记:废物利用改造kindle为天气预报日历

个人博客地址 很早之前购买了kindle用来看电纸书,后面也逐渐吃灰了,尤其当去年kndle电子书店停止服务后,就一直没充过电了,中途有段时间想着,当时买的时候还挺贵,不能这么浪费了,给它充满电后&a…

MathType7.8永久破解版下载 让数学学习变得简单有趣!

大家好,我是科技评论家。今天给大家推荐一款非常实用的数学公式编辑器——MathType 7.8!📱💰 在数字化时代,学术研究、教学和科研领域中的数学公式编辑需求越来越高。而MathType 7.8作为一个广受欢迎的数学公式编辑器&…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题的解决方式

问题描述 客户端root用户连接数据库出现出现Public Key Retrieval is not allowed 原因分析: 加上allowPublicKeyRetrievalfalse: 解决方案: allowPublicKeyRetrievaltrue:

【面试干货】 Hash 索引和 B+树索引的区别

【面试干货】 Hash 索引和 B树索引的区别 1、Hash 索引2、B 树索引3、区别和适用场景 💖The Begin💖点点关注,收藏不迷路💖 在数据库中,索引是一种重要的数据结构,用于加速查询操作。常见的索引包括 Hash 索…

tkinter颜色选择器

tkinter颜色选择器 颜色选择器效果代码 颜色选择器 Tkinter 提供了一个简单易用的颜色选择器模块 colorchooser,通过调用 colorchooser.askcolor() 方法,我们可以轻松实现颜色选择功能。 效果 代码 import tkinter as tk from tkinter import colorch…

智慧社区整体解决方案

1.智慧社区整体建设方案内容 2.整体功能介绍

【NOI-题解】1468. 小鱼的航程1074 - 小青蛙回来了1261. 韩信点兵1254. 求车速1265. 爱因斯坦的数学题

文章目录 一、前言二、问题问题:1468. 小鱼的航程问题:1074 - 小青蛙回来了问题:1261. 韩信点兵问题:1254. 求车速问题:1265. 爱因斯坦的数学题 三、感谢 一、前言 本节主要对循环中需要流程控制的题目进行讲解&#…

Numba 的 CUDA 示例(4/4):原子和互斥

本教程为 Numba CUDA 示例 第 4 部分。 本系列第 4 部分总结了使用 Python 从头开始学习 CUDA 编程的旅程 介绍 在本系列的前三部分(第 1 部分,第 2 部分,第 3 部分)中,我们介绍了 CUDA 开发的大部分基础知识&#xf…

C语言王国——数据的内存管理

目录 一、引言 二、整形在内存中的存储 2.1 进制之间的转换 2.1.1 整形的二进制 2.1.2 十进制和二进制 2.1.3 十进制和八进制的转换 2.1.4 十六进制和十进制的转换 2.2 原码,反码,和补码 三、大、小端字节序 3.1 大小端的定义 3.2 为什么会有大…

LabVIEW FPGA开发NI sbRIO-9607高精度数字滤波器

使用NI sbRIO-9607硬件平台,通过LabVIEW FPGA模块实现一个高精度数字滤波器。该应用不需要额外的实时操作系统 (RT),所有控制与数据处理均在sbRIO-9607的FPGA上完成,充分利用其并行处理能力,实现低延迟、高性能的数据滤波。这种滤…

【Git】Git 的基本操作 -- 详解

一、创建 Git 本地仓库 要提前说的是,仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制,就必须先创建一个仓库出来。 创建⼀个 Git 本地仓库对应的命令为 git init ,注意命令要在文件目录下执行,例如:…

IT闲谈-IMD是什么,有什么优势

目录 一、引言二、IDM是什么?三、IDM的优势1. 高速下载2. 稳定性强3. 强大的任务管理4. 视频下载5. 浏览器整合 四、应用场景1. 商务办公2. 教育学习3. 娱乐休闲 总结 一、引言 在数字化时代,下载管理器已成为我们日常工作和生活中不可或缺的工具。而在…

Rethinking overlooked aspects in vision-language models

探讨多模态视觉语言模型的一些有趣结论欢迎关注 CVHub!https://mp.weixin.qq.com/s/zouNu-g-33_7JoX3Uscxtw1.Introduction 多模态模型架构上的变化不大,数据的差距比较大,输入分辨率和输入llm的视觉token大小是比较关键的,适配器,VIT和语言模型则不是那么关键。InternVL-…