如何使用 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 中读取文件的主要内容,如果未能解决你的问题,请参考以下文章

Python中上下文管理器和装饰器之间的区别

如何使用 Xampp 作为 localhost 在大于 2mb 的 wordpress 中上传主题

如何在量角器中上/下滚动网格?

如何在couchbase服务器中正确创建子查询的索引?

在 Swift 中上滑动画

未知宽高元素如何在一个div中上下左右居中对齐