Spa*_*att 8 python pandas python-s3fs
Pandas (v1.0.5) 使用s3fs库连接 AWS S3 并读取数据。~/.aws/credentials默认情况下,s3fs 使用配置文件中的文件中找到的凭据default。如何指定 pandas 在从 S3 读取 CSV 时应使用哪个配置文件?
例如。
s3_path = 's3://mybucket/myfile.csv'
df = pd.read_csv(s3_path)
Run Code Online (Sandbox Code Playgroud)
$ cat ~/.aws/credentials
[default]
aws_access_key_id = ABCD
aws_secret_access_key = XXXX
[profile2]
aws_access_key_id = PQRS
aws_secret_access_key = YYYY
[profile3]
aws_access_key_id = XYZW
aws_secret_access_key = ZZZZ
Run Code Online (Sandbox Code Playgroud)
编辑 :
当前的黑客/工作解决方案:
import botocore
import s3fs
session = botocore.session.Session(profile='profile2')
s3 = s3fs.core.S3FileSystem(anon=False, session=session)
df = pd.read_csv( s3.open(path_to_s3_csv) )
Run Code Online (Sandbox Code Playgroud)
上述解决方案的唯一问题是您需要导入 2 个不同的库并实例化 2 个对象。保持问题的开放性,看看是否有另一种更干净/简单的方法。
df = pd.read_csv(s3_path, storage_options=dict(profile='profile2'))
Run Code Online (Sandbox Code Playgroud)
小智 2
import s3fs
s3 = s3fs.S3FileSystem(anon=False, profile_name="your-profile-name")
Run Code Online (Sandbox Code Playgroud)
我相信不使用 boto,您可以使用 s3fs 的 S3FileSystem 部分。然后使用文件处理程序,例如:
with s3.open('bucket/file.txt', 'rb') as f:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5672 次 |
| 最近记录: |