Ошибка доступа при чтении таблицы Excel из S3 с использованием модуля Python XLrd - PullRequest
0 голосов
/ 24 апреля 2018

Я использую приведенный ниже код для чтения файла Excel из Amazon S3 с использованием модулей python xlrd и urllib, но я получаю Forbidden ошибку доступа. Я знаю, это потому, что я не прохожу AWS Access Key и AWS Secret Access 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)

Как мне прочитать Excel из S3 с помощью модуля Python Xlrd?

1 Ответ

0 голосов
/ 29 мая 2018

Это можно сделать с помощью 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())
...