【发布时间】:2017-09-07 09:08:05
【问题描述】:
我已经阅读了here 和here 的可用答案,但这些都没有帮助。
我正在尝试从S3 存储桶中读取csv 对象,并且能够使用以下代码成功读取数据。
srcFileName="gossips.csv"
def on_session_started():
print("Starting new session.")
conn = S3Connection()
my_bucket = conn.get_bucket("randomdatagossip", validate=False)
print("Bucket Identified")
print(my_bucket)
key = Key(my_bucket,srcFileName)
key.open()
print(key.read())
conn.close()
on_session_started()
但是,如果我尝试使用 pandas 作为数据框读取相同的对象,则会出现错误。最常见的是S3ResponseError: 403 Forbidden
def on_session_started2():
print("Starting Second new session.")
conn = S3Connection()
my_bucket = conn.get_bucket("randomdatagossip", validate=False)
# url = "https://s3.amazonaws.com/randomdatagossip/gossips.csv"
# urllib2.urlopen(url)
for line in smart_open.smart_open('s3://my_bucket/gossips.csv'):
print line
# data = pd.read_csv(url)
# print(data)
on_session_started2()
我做错了什么?我在 python 2.7 上,不能使用 Python 3。
【问题讨论】:
-
不要在不知道自己在做什么的情况下使用那些过时的示例。去看看boto3
-
既然你已经在使用
smart_open,那么就用data = pd.read_csv(smart_open.smart_open('s3://randomdatagossip/gossips.csv'))吧。
标签: python python-2.7 pandas amazon-s3 boto