You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda函数lambda_function.py第26行缩进不匹配语法错误求助

解决Lambda函数中的Python缩进语法错误

这个错误是Python里最常见的问题之一——缩进不匹配,Python对代码块的缩进要求非常严格,混合使用空格和制表符,或者缩进的空格数和外层代码块不一致,都会触发这个报错。针对你的情况,我给你几个具体的排查和修复步骤:

1. 定位第26行的缩进问题

报错明确指向了第26行,你需要重点检查这一行的缩进:

  • 确认它所在的代码块(比如try、循环、条件判断等)的外层缩进层级,比如如果它在try块里,就要和try下面的第一行代码(比如你写的print("Using waiter..."))保持完全相同的缩进数量。
  • 绝对不要混合使用空格和制表符!很多时候这个错误都是因为一部分代码用了4个空格,另一部分用了Tab键,Python会把它们判定为不同的缩进长度。

2. 统一缩进风格

Python社区推荐使用4个空格作为标准缩进,Lambda运行环境也遵循这个规范。你可以:

  • 把代码里所有的制表符(Tab)替换成4个空格;
  • 确保每个代码块内的所有语句缩进一致,比如try块里的waiter定义、wait()调用都要和上面的print语句对齐。

3. 修复后的代码示例

结合你提供的代码片段,修复缩进后的完整逻辑大概是这样(注意看try块内的缩进):

from __future__ import print_function
import json
import boto3
import time
import urllib

print('loading function')
s3 = boto3.client('s3')

def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key'])
    try:
        print("Using waiter to waiting for object to persist thru s3 service")
        # 以下代码和上面的print保持4个空格缩进
        waiter = s3.get_waiter('object_exists')
        waiter.wait(Bucket=bucket, Key=key)
        # 后续业务逻辑也保持相同缩进
        print(f"Successfully waited for object: {key} in bucket: {bucket}")
    except Exception as e:
        print(f"Error occurred: {str(e)}")
        raise e  # 抛出异常让Lambda捕获

4. 辅助排查工具

你可以用文本编辑器的“显示空白字符”功能(比如VS Code里开启后,空格会显示为点,制表符显示为箭头),这样就能一眼看到是不是混合了不同的缩进符号。

按照上面的步骤检查第26行的缩进,统一整个文件的缩进风格,这个错误应该就能解决了。

内容的提问来源于stack exchange,提问作者Biswajeet Behera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:35:10