如何使用Python将CSV文件上传到myBucket并在S3 AWS中读取文件

10

我该如何将本地计算机上的CSV文件上传到我的AWS S3存储桶中并读取该CSV文件?

bucket = aws_connection.get_bucket('mybucket')
#with this i am able to create bucket
folders = bucket.list("","/")
  for folder in folders:
  print folder.name

现在我想将csv上传到我的csv并读取该文件。

1个回答

20

所以你正在使用 boto2 -- 我建议你转移到 boto3。请参考以下简单示例:

boto2

上传示例

import boto 
from boto.s3.key import Key
bucket = aws_connection.get_bucket('mybucket')
k = Key(bucket)
k.key = 'myfile'
k.set_contents_from_filename('/tmp/hello.txt')

下载示例

import boto
from boto.s3.key import Key

bucket = aws_connection.get_bucket('mybucket')
k = Key(bucket)
k.key = 'myfile'
k. get_contents_to_filename('/tmp/hello.txt')

boto3

上传示例

import boto3
s3 = boto3.resource('s3')
s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))

或者简单地说

import boto3
s3 = boto3.resource('s3')
s3.meta.client.upload_file('/tmp/hello.txt', 'mybucket', 'hello.txt')

下载示例

import boto3
s3 = boto3.resource('s3')
s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
print(open('/tmp/hello.txt').read())

如何授予权限..如何创建私有Bucket。如果我的Bucket已经存在,我该如何将其设为私有? - TB.M
最好直接从AWS控制台使用存储桶策略进行工作。 - Frederic Henri
很好的答案。您为什么更喜欢使用以下代码:s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')``` 而不是 ```s3 = boto3.client('s3') s3.upload_file( '/tmp/hello.txt', 'mybucket', 'hello.txt')```? - Peter
@Peter,如果需要的话,upload_file 方法可以让你传递一个 ExtraArgs 参数(例如,设置 ACL 权限等)。 - Frederic Henri
在您的第一个boto3上传示例中,声明“bucket”是不必要的。 - jspinella
@jspinella 眼力不错 :) - Frederic Henri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接