繁体   English   中英

Pandas:如何访问内部 netapp 存储网格文件

[英]Pandas: How to access in house netapp storage grid file

我在公司基础架构中有 NetApp 存储网格 (S3)。 我是 S3 的新手。 在 Pandas 处理完一个 csv 文件后,我需要将此文件写入 S3。 存储网格的 URL 为https://myCompanys3.storage.net ,存储桶为“test_bucket”。 我提到了https://stackoverflow.com/a/51777553/13065899

根据 Python/Pandas/S3 上的其他阅读,按照以下步骤操作:

  1. 在我的用户文件夹(Windows 笔记本电脑)中创建了 folder.aws
  2. 使用以下条目创建凭据文件:

'''

[default]
aws_access_key_id=myAccessKey
aws_secret_access_key=mySecretAccessKey

'''

  1. pip 安装 s3fs
  2. 写了这行代码:

df.to_csv('https://myCompanys3.storage.net/test_bucket/myTest.csv')

得到这个错误: urllib.error.HTTPError: HTTP 错误 403: Forbidden 上面 to_csv 中给出的路径是构造文件完整路径的正确方法吗?

到目前为止,我看到的所有示例都以“s3://”开头,而不是完整的 url。

s3 是一个关键字并且需要任何读/写存储网格吗?

试过了

df.to_csv('s3://https://s3.medcity.net://hpg-dl-dev/PandasInvoiceTest.csv', index=False)

收到此错误:无效的存储桶名称“https:”:存储桶名称必须匹配正则表达式“^[a-zA-Z0-9.-_]{1,255}$”

有人可以帮我解决我所缺少的吗? 也许是我将 url 外部化的 s3 配置?

先感谢您。

  1. 使用boto3建立连接并下载文件
  2. stream 使用 io.StringIO() 将字符串 object 转换为pd.read_csv() io.StringIO()
import boto3, json
from pathlib import Path
import io

with open(Path.cwd().joinpath("aws-secrets.json")) as f: cfg = json.load(f)
sess = boto3.session.Session(region_name=cfg["REGION_NAME"],
                                 aws_access_key_id=cfg["ACCESS_ID"],
                                 aws_secret_access_key=cfg["ACCESS_KEY"])

pd.read_csv(io.StringIO(
    sess.resource("s3").Object("silicon-myfiles", "elevationdata.csv").get()["Body"].read().decode()
))


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM