You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OCI Notebook中DataFrame生成的CSV直接上传至Bucket的问题求助

解决OCI Data Science Notebook自动上传CSV到对象存储的问题

问题根源

你遇到的ConfigFileNotFound错误,是因为官方示例代码针对本地环境编写,依赖~/.oci/config配置文件,但OCI Data Science Notebook作为托管环境,默认使用Instance Principals进行身份认证,无需手动创建本地config文件。

解决方案

以下提供两种更简洁的实现方式,适配Notebook环境:

方式1:直接从DataFrame上传(无需生成本地CSV文件)

这种方式跳过本地文件存储环节,直接将DataFrame转为CSV字节流上传,效率更高:

import pandas as pd
import oci
from oci.object_storage import ObjectStorageClient
from oci.auth.signers import InstancePrincipalsSecurityTokenSigner

# 1. 初始化对象存储客户端(使用Instance Principals认证)
signer = InstancePrincipalsSecurityTokenSigner()
object_storage_client = ObjectStorageClient(config={}, signer=signer)
namespace = object_storage_client.get_namespace().data

# 2. 假设你的DataFrame为df(替换成你的实际DataFrame)
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['a', 'b', 'c']})

# 3. 将DataFrame转为CSV字节流
csv_content = df.to_csv(index=False).encode('utf-8')

# 4. 配置上传参数(替换为你的存储桶名称和目标对象名称)
bucket_name = "your-target-bucket"
object_name = "data_output.csv"

# 5. 执行上传
object_storage_client.put_object(
    namespace_name=namespace,
    bucket_name=bucket_name,
    object_name=object_name,
    put_object_body=csv_content
)

print(f"已成功将DataFrame上传至存储桶 {bucket_name},对象名称:{object_name}")

方式2:上传已生成的本地CSV文件

如果已经生成了本地CSV文件,可使用以下代码上传:

import oci
from oci.object_storage import ObjectStorageClient
from oci.auth.signers import InstancePrincipalsSecurityTokenSigner

# 1. 初始化对象存储客户端
signer = InstancePrincipalsSecurityTokenSigner()
object_storage_client = ObjectStorageClient(config={}, signer=signer)
namespace = object_storage_client.get_namespace().data

# 2. 配置参数(替换为你的实际路径和存储桶信息)
local_csv_path = "/home/datascience/your-file.csv"
bucket_name = "your-target-bucket"
object_name = "uploaded_file.csv"  # 存储桶中显示的文件名

# 3. 读取文件并上传
with open(local_csv_path, "rb") as file:
    object_storage_client.put_object(
        namespace_name=namespace,
        bucket_name=bucket_name,
        object_name=object_name,
        put_object_body=file
    )

print(f"本地文件 {local_csv_path} 已成功上传至存储桶 {bucket_name}")

关键修改说明

  • 替换了认证方式:用InstancePrincipalsSecurityTokenSigner替代本地config文件,适配Notebook的托管环境身份认证机制
  • 简化了流程:去掉了官方示例中的多进程、命令行参数等复杂逻辑,保留核心上传功能,更适合Notebook场景

内容的提问来源于stack exchange,提问作者Rob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:35:01