簡體   English   中英

使用 lambda 和 boto3 從 S3 存儲桶中讀取 csv 個文件的子集

[英]Reading a subset of csv files from S3 bucket using lambda and boto3

在我的 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 是空的,我應該更改前綴嗎?

前綴不能包含通配符。

你應該使用:

prefix = 'folder/data_overview_`

如果您需要進一步限制為僅 CSV 個文件,則需要在 Python 代碼中使用if語句來執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM