python与腾讯云-对象存储(Cloud Object Storage,COS)的简单交互

对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
参考文档👉产品概述
API-Explorer👉在线调用示例
创建手册👉快速入门

文件写入COS

解析arXiv论文链接为PDF文件存入COS

import requests
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
import os

这里qcloud_cos 的安装,我是安装了cos-python-sdk-v5可以正常执行,应该是一个比较旧的版本。pip install cos-python-sdk-v5

# COS配置信息
secret_id = 'XXXX'  # SecretId
secret_key = 'XXX'  # SecretKey
region = 'ap-beijing'  # COS区域
bucket = 'XXXXX'  # 存储桶名称

# 初始化COS客户端
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
client = CosS3Client(config)

# arXiv PDF链接
pdf_urls = [
    "https://arxiv.org/pdf/2403.01147",
    "https://arxiv.org/pdf/2402.19387"
]

# 下载PDF并上传到COS
for pdf_url in pdf_urls:
    # 生成PDF文件名,这里假设使用URL中的ID部分作为文件名
    pdf_name = pdf_url.split('/')[-1] + ".pdf"
    
    # 下载PDF
    response = requests.get(pdf_url + ".pdf", stream=True)
    
    if response.status_code == 200:
        # 指定COS中的存储路径,这里将文件保存到PDF文件夹中
        cos_path = 'PDF/' + pdf_name

        # 上传PDF到COS
        try:
            client.put_object(
                Bucket=bucket,
                Body=response.raw.read(),  # 文件内容
                Key=cos_path,  # COS中的文件路径
                StorageClass='STANDARD',  # 存储类型
                ContentType='application/pdf'  # 文件类型
            )
            print(f"上传成功: {cos_path}")
        except Exception as e:
            print(f"上传失败: {e}")
    else:
        print(f"下载失败: {pdf_url}")

输出:

上传成功: PDF/2403.01147.pdf
上传成功: PDF/2402.19387.pdf

从COS读取数据

读取COS中创建的PDF文件夹下的文件名称

from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client

# COS配置信息
secret_id = 'xxxx'  # SecretId
secret_key = 'xxx'  #SecretKey
region = 'ap-beijing'  # COS区域
bucket = 'xxx'  # 存储桶名称

# 初始化COS客户端
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key)
client = CosS3Client(config)

# 指定要列出文件的文件夹前缀
prefix = 'PDF/'

# 调用list_objects方法获取文件夹内的文件列表
response = client.list_objects(
    Bucket=bucket,
    Prefix=prefix,  # 使用前缀来限制响应中的对象
    Delimiter='/'   # 指定一个分隔符,用于对对象名进行分组
)

# 初始化一个空列表用于存储文件名
file_names = []

# 遍历响应中的Contents字段获取文件名
if 'Contents' in response:
    for content in response['Contents']:
        file_names.append(content['Key'])

# 输出文件名列表到控制台
print(file_names)

输出:

['PDF/', 'PDF/2402.19387.pdf', 'PDF/2403.01147.pdf', 'PDF/2403.01758.pdf', 'PDF/2403.02171.pdf']

本文仅实现最基础的简单交互,后续深入使用之后会继续更新~

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值