任务 4 使用COS保存词云图并生成分享链接
任务目的
这一步的目标是将词云图保存到COS存储桶中,这里需要用到cos-python-sdk-v5
模块实现文件的上传功能,完成图片上传后,会生成一个分享链接,通过此链接可以在浏览器中访问生成的词云图。
任务步骤
1.存储桶创建及配置信息获取
关于创建存储桶和配置信息获取的详细步骤,可以参考腾讯云大学课程 使用Python生成个性二维码 中的 任务4 COS存储桶的创建和相关参数获取 。
本实验中主要需要用到的存储桶相关参数如下:
参数 | 说明 |
---|---|
bucket_name,region | 存储桶名称和所在地域,用于获取存储桶对象 |
secret_id,secret_key | 云API密钥,操作存储桶的必需参数 |
注意:此处存储桶的访问权限,请设置为公有读私有写,否则无法进行图片分发的操作。
2.创建上传词云图文件upload_to_cos.py
(1)创建文件。
在项目目录中执行下方命令,创建获取新闻数据的upload_to_cos.py
文件:
vim upload_to_cos.py
(2)粘贴实验代码。
按下I
键进入编辑模式,复制下方的代码,粘贴到文件中:
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
bucket_name = "<你的bucket_name>"
region = "<你的region>"
secret_id = "<你的secret_id>" # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
secret_key = "<你的secret_key>" # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
def upload_to_cos(file_name, bucket_name=bucket_name, region=region, secret_id=secret_id, secret_key=secret_key):
# 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
"""上传图片到COS存储桶"""
# 设置用户配置
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key) # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 获取客户端对象
client = CosS3Client(config)
print("上传词云图至COS存储桶...")
with open(file_name, "rb") as fp:
response = client.put_object(
Bucket=bucket_name,
Body=fp,
Key=file_name,
StorageClass='STANDARD',
EnableMD5=False
)
print("上传成功!COS图片链接为: https://{}.cos.{}.myqcloud.com/{}".format(bucket_name, region, file_name))
(3)替换配置参数。
完成实验代码的粘贴后,通过光标定位到代码上方配置参数这一部分:
bucket_name = "<你的bucket_name>"
region = "<你的region>"
secret_id = "<你的secret_id>" # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
secret_key = "<你的secret_key>" # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
此处需要将代码中右侧的部分,替换为学员自己的存储桶信息和云API密钥信息。
完成参数的配置后,按下 ESC
键切换到命令模式,并在英文模式下使用命令:wq
保存文件并退出编辑器。
接下来将会对此模块中函数upload_to_cos
的具体功能进行介绍说明。
3.upload_to_cos
函数代码解析
接下来将会对此函数的具体功能进行介绍。
注意:下方的代码介绍与上方粘贴的代码相同,主要是为了帮助学员理解代码功能,不需学员进行操作。
(1)获取客户端对象。
函数中的前两行代码,主要是用于获取客户端对象:
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key) # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
# 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
client = CosS3Client(config)
这一步的操作实际上是进行了客户端的初始化操作,通过创建客户端对象,便于接下来对COS存储桶进行操作。
注:更多信息可以参考腾讯云对象存储官方文档: PythonSDK-快速入门-初始化 。
(2)上传词云图至存储桶。
对于已经存储到本地的文件,可以通过文件流简单上传到COS存储桶:
with open(file_name, "rb") as fp:
response = client.put_object(
Bucket=bucket_name,
Body=fp,
Key=file_name,
StorageClass='STANDARD',
EnableMD5=False
)
此处的参数file_name
对应要上传的文件路径,此处使用的是已经在本地生成的词云图文件。
注:官方提供了多种上传对象的方式,详情可以访问官方文档:PythonSDK-快速入门-上传对象 。
上传成功后,将词云图片的访问链接打印在控制台上:
print("上传成功!COS图片链接为: https://{}.cos.{}.myqcloud.com/{}".format(bucket_name, region, file_name))
拼接出的访问链接,即为上传的词云图访问链接。
学员评价