如何在AWS Lambda的tmp目录中使用熊猫读取csv

时间:2019-06-03 16:18:15

标签: python-3.x pandas amazon-s3 lambda aws-lambda

我正在编写一个lambda,以将csv中的某些数据读取到数据帧中,对其进行处理,然后将其转换回csv,并使用新的csv在python lambda上进行api调用。

我使用pandas.read_csv命令遇到问题。它结束了我的lambda触发器执行,没有任何错误。

os.chdir('/tmp')
for root, dirs, files in os.walk('/tmp', topdown=True):
    for name in files:
        if '.csv' in name:
            testdic[name] = root
            print(os.path.isfile('/tmp/' + name))
            print(os.path.isfile(name))
            df = pd.read_csv(name)
            df = pd.read_csv('/tmp/' + name)

两个os.path.isfile返回true,并且我尝试了两个版本的read_csv,都无法正常工作,并且提前结束了lambda且没有错误。

我已经确认csv已下载到lambda tmp目录中,我可以读取和打印tmp中csv的行。但是当我运行= pd.read_csv('/ tmp / file.csv')或将目录更改为/ tmp并执行= pd.read_csv('file.csv')时,lambda不会出现错误并且不会通过点在代码中。我正在使用pandas 0.23.4,因为那是我需要使用的代码,它在本地工作。任何建议都会有帮助

预期结果应该是将csv读取到数据帧中,以便我可以对其进行操作。

已修复:无法仅使用'/ tmp /'+文件名。不得不使用os.path.join(root,filename),还由于文件大小而不得不增加我的lambda超时。

1 个答案:

答案 0 :(得分:1)

os.path.join-适用于不同平台

使用

file_path = os.path.join(root, name)

然后

pd.read_csv(file_path)

注意:按照@Gabe Maurer的评论中的建议,增加AWS Lambda超时