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

如何在Python中为文件每行开头添加对应缩进数的制表符?

给Python代码行添加基于大括号层级的缩进

我来帮你搞定这个给代码行添加层级缩进的需求,先梳理下你原代码里的几个小问题,再给你完整的实现方案:

  • 变量名笔误:你写的intent应该是indent(缩进的英文是indent,这样代码可读性更强)
  • 大括号处理顺序错误:遇到}时,应该先把缩进值减1,再处理当前行的缩进——不然闭合大括号的行会多一层不必要的缩进
  • 文件读写逻辑问题:直接用r+模式读写容易出现指针混乱,更稳妥的方式是先把所有内容读入内存,修改完成后再重新写入文件

下面是修正后的完整实现代码:

# 读取目标文件的所有内容
with open('file.py', 'r') as f:
    lines = f.readlines()

indent_level = 0
modified_lines = []

for line in lines:
    # 先处理闭合大括号:闭合行的缩进应该和对应开括号行同层级,所以先减缩进
    if '}' in line:
        indent_level -= 1
        # 防止缩进值变成负数(应对文件里多余闭合大括号的情况)
        indent_level = max(indent_level, 0)
    
    # 处理当前行的缩进:先去掉原有缩进避免重复叠加,再添加对应层级的制表符
    stripped_line = line.strip()
    if stripped_line:  # 非空行才添加缩进
        indented_line = '\t' * indent_level + stripped_line + '\n'
    else:
        indented_line = line  # 空行保持原样
    
    modified_lines.append(indented_line)
    
    # 最后处理打开大括号:下一行的缩进需要加一层
    if '{' in line:
        indent_level += 1

# 将修改后的内容写入文件(覆盖原文件)
with open('file.py', 'w') as f:
    f.writelines(modified_lines)

代码细节说明:

  • 用with语句处理文件,能自动管理文件的打开和关闭,比手动调用open/close更安全
  • 区分处理空行和非空行,避免给空行也加上多余缩进
  • 加入max(indent_level, 0)的判断,防止出现负缩进的异常情况
  • 读写分离的逻辑,避免了r+模式下指针位置混乱的问题

内容的提问来源于stack exchange,提问作者Avi Bag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:22