pythonoss批量上传_基于python如何实现上传⽂件到OSS基于
python实现上。。。
本篇⽂章⼩编给⼤家分享⼀下基于python实现上传⽂件到OSS代码实例,代码介绍的很详细,⼩编觉得挺不错的,现在分享给⼤家供⼤家参考,有需要的⼩伙伴们可以来看看。
基础环境
# +++++ 阿⾥云OSS开发指南⾥都有详细的步骤,在这⾥整理了⼀下⾃⼰需要的东西
# 确定开发环境,centOS默认安装了python2.7
# python -V
# 安装python开发包
# yum install -y python-devel
# 安装OSS的sdk
python怎么读文件夹下的文件夹# yum install -y python-pip
# pip2.7 install oss2
# 验证oss2是否安装正确
'''
>>> import oss2
>>> oss2.__version__
'2.6.0'
'''
# 验证OSS扩展库crcmod是否安装
'''
在python环境中,输⼊⼀下内容,如果有错误信息,则说明扩展库安装不成功,默认安装oss2的时候会安装扩展库
>>> import crcmod._crcfunext
如果出现安装不成功,则按⼀下步骤安装:
1、执⾏以下命令卸载crcmod
# pip uninstall crcmod
2、安装python-devel
3、执⾏以下命令重新安装crcmod
# pip install crcmod
'''
⼩⽂件上传
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import oss2
auth = oss2.Auth('', '')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'oss-cn-hangzhou.aliyuncs', '')
# 必须以⼆进制的⽅式打开⽂件,因为需要知道⽂件包含的字节数。
with open('', 'rb') as fileobj:
# Seek⽅法⽤于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到⽂件结束。fileobj.seek(1000, os.SEEK_SET)
# Tell⽅法⽤于返回当前位置。
current = ll()
bucket.put_object('', fileobj)
分⽚上传
# -*- coding: utf-8 -*-import os
from oss2 import SizedFileAdapter, determine_part_size
dels import PartInfo
import oss2
auth = oss2.Auth('', '')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'oss-cn-hangzhou.aliyuncs', '')
key = ''
filename = ''
total_size = size(filename)
# determine_part_size⽅法⽤来确定分⽚⼤⼩。
part_size = determine_part_size(total_size, preferred_size=100 * 1024)
# 初始化分⽚。
upload_id = bucket.init_multipart_upload(key).upload_id
parts = []
# 逐个上传分⽚。
with open(filename, 'rb') as fileobj:
part_number = 1
offset = 0
while offset < total_size:
num_to_upload = min(part_size, total_size - offset)
# SizedFileAdapter(fileobj, size)⽅法会⽣成⼀个新的⽂件对象,重新计算起始追加位置。
result = bucket.upload_part(key, upload_id, part_number,
SizedFileAdapter(fileobj, num_to_upload))
parts.append(PartInfo(part_number, ag))
offset += num_to_upload
part_number += 1
# 完成分⽚上传。
bucketplete_multipart_upload(key, upload_id, parts) # 验证分⽚上传。
with open(filename, 'rb') as fileobj:
_object(key).read() == ad()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。