python - 使用python xlrd模块从S3读取excel表时访问错误

标签 python excel amazon-s3 urllib xlrd

我正在使用下面的代码从 Amazon S3 读取一个 excel 文件使用 python xlrdurllib模块,但我得到 Forbidden访问错误。我知道这是因为我没有通过AWS Access KeyAWS Secret Access Key .我环顾四周,找到了一种将 key 作为参数传递的方法 urllib但找不到一个例子。

import urllib.request
import xlrd

url = 'https://s3.amazonaws.com/bucket1/final.xlsx'
filecontent = urllib.request.urlopen(url).read()

workbook = xlrd.open_workbook(file_contents=filecontent)
worksheet = workbook.sheet_by_name(SheetName)

如何使用 python xlrd 模块从 S3 读取 excel?

最佳答案

这可以使用 boto API 来完成

import boto
import boto.s3.connection
from boto.s3.key import Key
import sys
import pandas as pd

    try:
           conn = boto.connect_s3(aws_access_key_id = your_access_key, aws_secret_access_key = your_secret_key)
           bucket = conn.get_bucket('your_bucket')
           print ("connected to AWS/s3")
    except Exception as e:
           print ("unable to connect to s3 - please check credentials")
           print(e)
           sys.exit(1)

destFileName = "/tmp/myFile.xlsx"
k = Key(bucket, "path_to_file_on_s3/sourceFile.xlsx")
k.get_contents_to_filename(destFileName)

df = pd.read_excel(destFileName, sheet_name=Sheet1)
print(df.head())

关于python - 使用python xlrd模块从S3读取excel表时访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50009698/

相关文章:

amazon-s3 - JClouds S3 : Specify Content Length when uploading file

ruby-on-rails - S3 预签名 URL : Invalid according to Policy: Policy Condition failed success_action_status

python - 无法导入 flask ,因为 werkzeug

python - Jupyter 笔记本的 tqdm 失败

python -/admin/login/(1698, "Access denied for user ' root'@'localhost'") 出现操作错误

python - 删除Python中嵌套的bbcode引号?

R 包 openXLSX 和浮点运算可能会给出不准确的结果

vba - 释放按键时触发事件 VBA

java - 每周处理 S3 中的所有文件

excel - 根据 Excel 值从网站地址中提取数据