【问题标题】:Reading a subset of csv files from S3 bucket using lambda and boto3使用 lambda 和 boto3 从 S3 存储桶中读取 csv 文件的子集
【发布时间】:2022-03-02 19:07:25
【问题描述】:

在我的 s3 存储桶中,我有大约 30 个 csv 文件,分为 3 类。使用我的 lambda,我有兴趣只选择属于 1 类的 8 个。 我使用了下一个问题的回复:Reading multiple csv files from S3 bucket with boto3

所以我制定了下一个代码:

def read_prefix_to_df(prefix,s3_resource,bucket_name):
    bucket = s3_resource.Bucket(bucket_name)
    prefix_objs = bucket.objects.filter(Prefix=prefix)
    prefix_df = []
    for obj in prefix_objs:
        key = obj.key
        body = obj.get()['Body'].read()
        df = pd.DataFrame(body)
        prefix_df.append(df)
    return prefix_df

地点:

bucket_name='my_bucket'
prefix='folder/data_overview_*.csv'

除了最后的日期外,所有 8 个文件的名称几乎相同,这就是为什么我使用 * 来选择与 data_overview_ 相关的所有文件 可惜返回的dataframe是空的,要不要改一下前缀?

【问题讨论】:

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


    【解决方案1】:

    前缀不能包含通配符。

    你应该使用:

    prefix = 'folder/data_overview_`
    

    如果您需要进一步限制为仅 CSV 文件,则需要在 Python 代码中使用 if 语句来实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 2016-07-12
      • 2018-04-29
      • 2019-11-12
      • 2021-01-31
      • 2018-11-07
      • 2017-09-29
      • 1970-01-01
      相关资源
      最近更新 更多