如何使用 Python 在 myBucket 中上传 CSV 文件并在 S3 AWS 中读取文件
Posted
技术标签:
【中文标题】如何使用 Python 在 myBucket 中上传 CSV 文件并在 S3 AWS 中读取文件【英文标题】:How do I upload a CSV file in myBucket and Read File in S3 AWS using Python 【发布时间】:2017-04-04 18:10:57 【问题描述】:如何将 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】:所以您使用的是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')
bucket = s3.Bucket('mybucket')
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())
【讨论】:
以及如何授予权限..如何制作私有存储桶。如果我的存储桶已经存在。如何将其设为私有? 最好是直接从 aws 控制台使用存储桶策略 很好的答案。您是否有理由更喜欢s3 = boto3.resource('s3') 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 upload_file
方法将允许您在需要时传递 ExtraArgs
参数(例如,设置 ACL 权限等)以上是关于如何使用 Python 在 myBucket 中上传 CSV 文件并在 S3 AWS 中读取文件的主要内容,如果未能解决你的问题,请参考以下文章