简介

最近在学习Python,为之庞大的第三方库感到震撼。今天分享一个Python 自动化脚本,功能是将H5静态资源上传到OSS,以方便实现CDN加速,我将其放在Jenkins自动发布中使用。该脚本不是我的原创,是前同事留下的,希望对需要的小伙伴有所帮助。

安装阿里云第三方库

pip install oss2

脚本说明

accesskey,accesspassword,bucketname,ossBucket 需要根据自己账户情况作出调整

脚本内容

#!/usr/bin/python
# -*- coding:utf8 -*-import os
import sys
import oss2# 阿里云相关的token
ossAuth = oss2.Auth('accesskey', 'accesspassword')
ossBucket = oss2.Bucket(ossAuth, 'oss-cn-hangzhou.aliyuncs.com', 'bucketname')# 本地需要上传的文件或者目录,sys.argv: 实现从程序外部向程序传递参数。
pathfile = sys.argv[1]# 判断是否输入目标目录(在oss中的目录,程序会自动创建),如果没有输入目标目录,则直接上传文件到oss的根目录下
if len(sys.argv) == 3:ossDir = sys.argv[2] + "/"
else:ossDir = ""ee = [1]
ee[0] = 1
# 最后一次上传到哪个文件,第一次上传请修改ee[0]=1
ff = '550.jpg'# 定义是目录
def list(dir):fs = os.listdir(dir)for f in fs:file = dir + "/" + f;print("file is" + ":" + file)if os.path.isdir(file):list(file)else:uploadDir(file)# 上传带目录的文件到OSS
def uploadDir(path_filename):print("------------------")print(path_filename)remoteName = ossDir + path_filename.split('//')[1]print("remoteName is" + ":" + remoteName)print('uploading..', path_filename, 'remoteName', remoteName)if (ee[0] == 0 and remoteName == ff):ee[0] = 1if 1 == ee[0]:result = ossBucket.put_object_from_file(remoteName, path_filename)print('http_status: {0}'.format(result.status))# 上传文件到OSS
def uploadFile(filename):remoteName = ossDir + os.path.basename(filename)print("remoteName is" + ":" + remoteName)print('uploading..', filename, 'remoteName', remoteName)if (ee[0] == 0 and remoteName == ff):ee[0] = 1if 1 == ee[0]:result = ossBucket.put_object_from_file(remoteName, filename)print('http_status: {0}'.format(result.status))##判断是文件还是目录
if os.path.isdir(pathfile):if pathfile.endswith('/'):passelse:pathfile += "/"print("it's a directory")list(pathfile)
elif os.path.isfile(pathfile):print("it's a normal file")uploadFile(pathfile)
else:print("it's a special file (socket, FIFO, device file)")

执行效果展示

python /etc/ansible/scripts/bxq-online-oss.py $WORKSPACE/dist

参考文档

  • python之sys模块详解:https://www.cnblogs.com/cherishry/p/5725184.html
  • Aliyun OSS SDK for Python:https://aliyun-oss-python-sdk.readthedocs.io/en/stable
  • aliyun-oss-python-sdk Github地址:https://github.com/aliyun/aliyun-oss-python-sdk/tree/master/oss2

转载于:https://www.cnblogs.com/William-Guozi/p/python-oss.html

Python:自动化上传OSS相关推荐

  1. python自动化上传文件_python接口自动化测试二十三:文件上传

    # 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requests class LoginZentao(): def __init__(self, s): # 初始化 self. ...

  2. python3 selenium web自媒体百家号企鹅号大鱼号acfun站,自动化上传视频以及经验总结分享

    前言 大家好,我是最渣的黑客,这几天在写selenium web 自动化.如果一个UP主在做自媒体,剪辑好一个视频要上传多个平台,而这些平台还没有互相关联可以进行同步,这个时候上传视频的工作就成了一个 ...

  3. PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...

    2019独角兽企业重金招聘Python工程师标准>>> 一.概述和通过config接口注入权限验证配置 由于微信的临时素材(如:录音文件)上传到微信服务器上,微信后台保存时间为3天. ...

  4. python实现文件下载-python实现上传下载文件功能

    最近刚学python,遇到上传下载文件功能需求,记录下! django web项目,前端上传控件用的是uploadify. 文件上传 - 后台view 的 Python代码如下: @csrf_exem ...

  5. python 文件上传下载,python实现上传下载文件功能

    最近刚学python,遇到上传下载文件功能需求,记录下! django web项目,前端上传控件用的是uploadify. 文件上传 - 后台view 的 Python代码如下: @csrf_exem ...

  6. python第三方库文件传输_本地 Python 代码上传到 Python 第三方库(Pypi)

    程序员对于编程都有自己的"套路",好的套路都会得到复用和 IT 界的传播.这时有一个疑问,怎样来实现呢?小编这里就准备介绍如何将自己写的 Python 包上传到 Python 官网 ...

  7. 通过url链接将图片上传oss图片显示不完整问题

    通过url链接将图片上传oss图片显示不完整问题 问题:在之前通过链接上传图片的时候,都是先获取inputStream流,然后通过available()方法获取文件大小.但是通过这种方法获取到的文件大 ...

  8. uedit php,laravel uedit上传oss

    laravel ueditor上传oss 首先下载ueditor包安装好! ueditor包没有?好吧,看这里laravel ueditor教程 oss包没有?好吧,看这里laravel oss教程 ...

  9. 小程序miniprogram自动化上传,不需要依赖微信开发者工具

    小程序miniprogram自动化上传,不需要依赖微信开发者工具 1.创建目录结构 chatTest => 你的小程序文件 uploadfq => 文件目录,随便起名 node_modul ...

最新文章

  1. 前端服务器共享的文件产品内容,Skype for Business Server 2015-04-前端服务器-2-创建一个文件共享...
  2. 我被编程语言PUA了!
  3. VMware HA实战攻略之五VMwareHA测试验收
  4. WPF里ItemsControl的分组实现
  5. Android HTTP POST上传
  6. 【ElasticSearch】Es 源码之 PersistedClusterStateService 源码解读
  7. vue项目报错,解决Module build failed: Error: Cannot find module ‘node-sass‘ 问题
  8. php ajax 搜索实例,PHP 实例 AJAX 实时搜索
  9. Premiere Elements使用教程:将音乐添加到视频片段
  10. springmvc解决静态资源无法访问的两种方法
  11. 将Jquery EasyUI中DataGird的数据导入Excel中
  12. 线性代数矩阵秩的8大性质、重要定理以及关系
  13. 【网络技术联盟站】网络安全 | 瑞哥带你全方位解读防火墙技术!
  14. 导出数据库设计文档的几种方案
  15. ios打包发布testflight
  16. Aho - Corasick string matching algorithm
  17. 如何真正做好客户管理
  18. tomcat各版本下载
  19. php药物,php药品进销存管理系统
  20. 用 python 脚本,把当前目录及子目录下的 wav 音频文件转换为 flac 格式

热门文章

  1. 关于CI的服务器与最佳实践,这里有一些思考 1
  2. 在linux上搭建本地yum源
  3. 自定义webview,根据网页大小确定webview大小
  4. WIN32开发:如何获取父进程的ID
  5. 由键盘下陷引起的奇怪事件
  6. 优化问题中的两个挑战是?
  7. 如果你的船不进来,就游出去迎接它 乔纳森温特斯
  8. selection at the technology management
  9. 利用叉乘快速判断点是否在三角形内
  10. Apache常见配置错误