写博客或者笔记的时候,会经常要将图片上传至腾讯云对象存储COS上面,需要用QQ登录腾讯云再手动上传,稍显麻烦。
看了下腾讯云开放API,对接很简单。
首先创建一个子账号,然后在访问管理-访问密钥-API密钥管理
里面创建一对新密钥SecretId/SecretKey。复制保存下来。
COS有很多语言实现的SDK,Python版本的地址:https://cloud.tencent.com/document/product/436/12269
首先pip安装:
1 pip install -U cos-python-sdk-v5
然后就可以直接上代码了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 """ 使用腾讯云COS的SDK来上次图片 appid 已在配置中移除,请在参数 Bucket 中带上 appid。Bucket 由 BucketName-APPID 组成 设置用户配置, 包括 secretId,secretKey 以及 Region """ import loggingimport osimport shutilimport sysfrom qcloud_cos import CosConfigfrom qcloud_cos import CosS3Clientlogging.basicConfig(level=logging.INFO, stream=sys.stdout) secret_id = 'xxxxx' secret_key = 'xxxxx' region = 'ap-shanghai' token = None config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) client = CosS3Client(config) def is_image (file ): return file.endswith('.jpg' ) \ or file.endswith('.jpeg' ) \ or file.endswith('.png' ) \ or file.endswith('.ico' ) def upload_image (image ): response = client.upload_file( Bucket='xnstatic-1253397658' , LocalFilePath=image, Key=image, PartSize=10 , MAXThread=10 ) print (response['ETag' ]) backup = os.path.join(os.curdir, 'backup' ) if not os.path.isdir(backup): os.mkdir(backup) files = [f for f in os.listdir(os.curdir) if os.path.isfile(f) and is_image(f)] for image in files: upload_image(image) shutil.move(os.path.join(os.curdir, image), os.path.join(backup, image))
官方的文件上传下载例子:
https://github.com/tencentyun/cos-python-sdk-v5/blob/master/qcloud_cos/demo.py
最后,如果在windows上面开发,写个bat脚本,双击即可运行:
1 2 3 4 5 6 7 @echo off REM 声明采用UTF-8编码 chcp 65001 cd %~dp0 echo 当前目录:%~dp0 python cos_image.py pause
把这两个脚本文件放在某个文件夹目录下面,每次想上传图片了就复制到这个文件夹,双击bat搞定。