python - AWS Lambda - 根据文件名导入 csv 文件
问题描述
我有一个模型,我正试图转移到 AWS Lambda。我遇到了一些我找不到答案的项目。我需要根据名称导入几个 csv 文件,然后将它们组合起来。在 python 中,我使用了一个在 lambda 中不起作用的简单 glob 函数。我的指导将不胜感激。
我在 Python 中有这段代码
inputFiles = glob.glob('C:/Users/some files/test*.csv')
df_list = []
for filename in sorted(inputFiles):
df_list.append(pd.read_csv(filename))
Final_df= pd.concat(df_list)
我尝试使用类似的代码来做同样的事情(它产生了一个空集)
inputFiles = glob.glob('s3://my-bucket/test*.csv')
df_list = []
for filename in sorted(inputFiles):
df_list.append(pd.read_csv(filename))
Final_df= pd.concat(df_list)
更新我有循环读取所有必需的名称,但找不到将它们作为数据框导入的方法?
bucket=s3_resource.Bucket(bucket_name)
for key in bucket.objects.all():
if key.key.startswith('test'):
print(key.key)
解决方案
glob
不适用于 s3 URI,它不是普通的文件系统。boto3
是适用于 AWS 的 Python 开发工具包,您可以使用它来列出存储桶中的对象并检索它们。然后,您可以使用 pandas 读取本地副本。查看这些方法的 api 文档:
推荐阅读
- node.js - 匹配路由时节点代理源重写
- java - 这里究竟做了什么?尝试将代码从 Java 传输到 NodeJS
- python - 在消息 [discord.py] 上创建 DM
- php - Laravel 模型批量更新 - Builder::cleanBindings() 必须是数组类型,给定 null
- reactjs - 如何在 Socket.io 中触发真正的错误?
- flutter - 从外部更新 RepaintBoundary 内部
- generics - 通用数学运算符重载而不复制
- docker - 有没有办法将 USER 保留在 docker 基础映像上?
- c++ - 将一对映射到结构
- r - 如何在 r 中使用 VIF?