AWS Lambda中lambda_function模块语法错误排查求助
问题排查与解决方案
语法错误根源
你的代码里的try语句缺少对应的except或finally块,这是Python的语法强制要求——try必须搭配至少一个异常处理块(except)或者清理块(finally)。本地运行正常大概率是因为测试时没触发这段代码路径,或者你本地的代码原本有except但粘贴时遗漏了,但Lambda会在启动前严格检查代码语法,直接抛出错误。
修复代码(同时优化你的需求实现)
另外,你的代码可以针对需求做优化,比如直接过滤.txt文件,避免处理无关文件,同时不要用os.chdir切换目录(容易影响后续代码的工作路径):
import os import random def chooseRndBook(): # 直接拼接sources目录的绝对路径,Lambda工作目录为/var/task,确保sources文件夹在此路径下 sources_path = os.path.join(os.getcwd(), "sources") # 只筛选目录下的.txt文件(忽略大小写) txt_books = [file for file in os.listdir(sources_path) if file.lower().endswith('.txt')] # 可选:处理.DS_Store(其实筛选txt后已无需此步骤,仅作异常处理演示) try: txt_books.remove('.DS_Store') except ValueError: # 文件不存在时忽略异常 pass # 处理没有找到txt文件的情况 if not txt_books: return None # 或根据需求抛出自定义异常 return random.choice(txt_books)
Lambda部署注意事项
- 打包代码时,要确保
sources文件夹和lambda_function.py处于同一层级,一起打包上传 - 确认Lambda的Python运行时版本和你本地测试的版本一致,避免版本兼容问题
内容的提问来源于stack exchange,提问作者t-madhaw
相关产品推荐
相关产品推荐

