阿里云OSS操作
一、阿里云OSS API常用操作
1.上传文件
1.1 小文件上传(小于5GB)
1 2 3 4 5 6 7 8 9 10 11 | #!/usr/bin/python3 # -*- coding: utf-8 -*- import oss2 import os import sys oss_file_name=sys.argv[1] local_file_name=sys.argv[2] auth = oss2.Auth( 'LTAI5tKDLc6S2pkrcqyZHxxx' , 'OJybPiQpyeS22tlKpmgaex1xxxxxx' ) bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com' , 'mqops-backup' ) bucket.put_object_from_file(filename=local_file_name,key=oss_file_name) |
1.2 大文件上传(断点续传)
1 2 3 4 5 6 7 8 9 10 11 12 | #!/usr/bin/python3 # -*- coding: utf-8 -*- import oss2 import os import sys oss_file_name=sys.argv[1] local_file_name=sys.argv[2] auth = oss2.Auth( 'LTAI5tKDLc6S2pkrcqyZHxxx' , 'OJybPiQpyeS2xxxxxx' ) bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com' , 'mqops-backup' ) oss2.resumable_upload(bucket, oss_file_name, local_file_name, multipart_threshold=100 * 1024) # 设置分片大小,单位为字节,取值范围为100 KB~5 GB。默认值为100 KB |
2.删除文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/usr/bin/python3 # -*- coding: utf-8 -*- import oss2 file_list = [] retain_file_num = 3 #保留的文件个数 prefix = 'TestDB_bak/' # 文件前缀(类似目录名称)prefix参数不能以正斜线(/)开头。如果prefix参数置空,则默认列举Bucket内的所有Object auth = oss2.Auth( 'LTAI5tKDLc6S2pkrcqyZHxxx' , 'OJybPiQpyeS2xxxxxx' ) bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com' , 'mqops-backup' ) # 获取文件名称保存到列表,默认按照字母序排列 for obj in oss2.ObjectIterator(bucket,prefix=prefix): file_list.append(obj.key)# 删除需要保留的文件 file_list=file_list[:- retain_file_num] if file_list: # 删除文件,传入对象为列表 result = bucket.batch_delete_objects(file_list) # 打印成功删除的文件名。 print( '\n' . join (result.deleted_keys)) |
3.列举文件
简单列举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import oss2 auth = oss2.Auth( 'yourAccessKeyId' , 'yourAccessKeySecret' ) bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com' , 'examplebucket' ) # 列举fun文件夹下的文件与子文件夹名称,不列举子文件夹下的文件。如果不需要返回owner信息可以不设置fetch_owner参数。# prefix 列举以prefix开头的文件,即文件夹下所有文件和子文件夹,包含子文件下文件及文件夹名称# delimiter 如果为 '/' 则只列举该文件夹下的文件和子文件夹名称,子文件下的文件和文件夹不显示# start_after 列举文件的起始位置# fetch_owner 是否返回包含owenr的信息 for obj in oss2.ObjectIteratorV2(bucket, prefix = 'fun/' , delimiter = '/' , start_after= 'fun/' , fetch_owner=True): # 通过is_prefix方法判断obj是否为文件夹。 if obj.is_prefix(): # 判断obj为文件夹。 print( 'directory: ' + obj.key) else : # 判断obj为文件。 print( 'file: ' + obj.key) print( 'file owner display name: ' + obj.owner.display_name) print( 'file owner id: ' + obj.owner.id) 参考:https: //help.aliyun.com/document_detail/88458.html |
根据字段排序列举(需要OSS开启数据索引)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import oss2 from oss2.models import MetaQuery, AggregationsRequest auth = oss2.Auth( 'yourAccessKeyId' , 'yourAccessKeySecret' ) bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com' , 'mqops-backup' ) #do_meta_query_request = MetaQuery(max_results=10, query='{"Field": "Size","Value": "1048576","Operation": "lt"}', sort='Size', order='asc') #根据文件大小排序 do_meta_query_request = MetaQuery(query= '{"Field": "Filename","Value": "TestDB_bak/","Operation": "prefix"}' ,sort= 'FileModifiedTime' , order= 'asc' ) #指定路径,按时间进行排序 result = bucket.do_bucket_meta_query(do_meta_query_request) print(type(result.files)) print(result.files[0].file_name) 参考: 字段和操作符的支持列表:https: //help.aliyun.com/document_detail/419236.htm?spm=a2c4g.11186623.0.0.61ff4c940OkJTg#concept-2084036 DoMetaQuery API:https: //help.aliyun.com/document_detail/419228.html 数据索引:https: //help.aliyun.com/document_detail/416775.html |
参考:https://help.aliyun.com/document_detail/32025.html
"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2021-01-28 Pycharm 远程解释器的配置
2021-01-28 用 pyecharts 制作地球仪