AWS Lambda:使用Python从s3存储桶中读取csv文件尺寸,而无需使用Pandas或CSV包

时间:2019-03-07 03:17:02

标签: python pandas amazon-web-services amazon-s3 aws-lambda

下午好。我希望有人可以帮助我解决这个问题。

我在s3文件夹中有多个CSV文件。我想使用不带Pandas的python和csv包(因为aws lambda可用的包非常有限,并且有大小限制),并循环遍历s3存储桶中的文件,并读取csv尺寸(长度为行和列长)

例如,我的s​​3文件夹包含两个csv文件(1.csv和2.csv) 我的代码将通过指定的s3文件夹运行,并将行数和列数分别放入1个csv和2个csv中,并将结果放入一个新的csv文件中。非常感谢您的帮助!我可以使用Pandas软件包来做到这一点(感谢Pandas的上帝,但是aws lambda限制了我的使用范围)

AWS lambda使用python 3.7

1 个答案:

答案 0 :(得分:0)

如果您可以在lambda函数中访问s3资源,则基本上可以执行此操作以检查行,

def lambda_handler(event, context):
    import boto3 as bt3
    s3 = bt3.client('s3')
    csv1_data = s3.get_object(Bucket='the_s3_bucket', Key='1.csv')
    csv2_data = s3.get_object(Bucket='the_s3_bucket', Key='2.csv')

    contents_1 = csv1_data['Body'].read()
    contents_2 = csv2_data['Body'].read()
    rows1 = contents_1.split()
    rows2=contents_2.split()    
    return len(rows1), len(rows2)

它应该直接运行,如果不能运行,请告诉我。顺便说一句,像我在示例中所做的那样,将the bucket and file name硬编码到函数中根本不是一个好主意。

致谢。