代码之家  ›  专栏  ›  技术社区  ›  exan

Python:如何从AWS S3读取和加载Excel文件?

  •  1
  • exan  · 技术社区  · 7 年前

    我已经上传了一个Excel文件到AWS S3 bucket,现在我想用python来读它。任何帮助都将不胜感激。这是我迄今为止所取得的成就,

    import boto3
    import os
    
    aws_id = 'aws_id'
    aws_secret = 'aws_secret_key'
    
    client = boto3.client('s3', aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
    bucket_name = 'my_bucket'
    object_key = 'my_excel_file.xlsm'
    object_file = client.get_object(Bucket=bucket_name, Key=object_key)
    body = object_file['Body']
    data = body.read()
    

    接下来我需要做什么才能读取这些数据并对其进行处理?

    3 回复  |  直到 7 年前
        1
  •  1
  •   exan    7 年前

    花了很长时间在这上面,这就是我如何让它工作的,

    import boto3
    import io
    import pandas as pd
    import json
    
    aws_id = ''
    aws_secret = ''
    bucket_name = ''
    object_key = ''
    
    s3 = boto3.client('s3', aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
    obj = s3.get_object(Bucket=bucket_name, Key=object_key)
    data = obj['Body'].read()
    df = pd.read_excel(io.BytesIO(data), encoding='utf-8')
    
        2
  •  0
  •   sshevlyagin    7 年前

    python本机不支持Excel文件。你可以用熊猫图书馆 pandas library read_excel functionality

        3
  •  0
  •   Rhythm Chopra    7 年前

    您可以直接从S3读取XLS文件,而无需在本地下载或保存它。 xlrd 模块提供了用于创建工作簿对象的原始数据。 下面是代码段。

    from boto3 import Session  
    from xlrd.book import open_workbook_xls  
    
    aws_id = ''    
    aws_secret = ''
    bucket_name = ''
    object_key = ''
    
    s3_session = Session(aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
    bucket_object = s3_session.resource('s3').Bucket(bucket_name).Object(object_key)
    content = bucket_object.get()['Body'].read()
    workbook = open_workbook_xls(file_contents=content)