我正在编写一个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超时。
答案 0 :(得分:1)
os.path.join-适用于不同平台
使用
file_path = os.path.join(root, name)
然后
pd.read_csv(file_path)
注意:按照@Gabe Maurer的评论中的建议,增加AWS Lambda超时