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

Python按指定分隔符拆分大文本文件遇缩进错误求解决

解决Python缩进错误(Tabs vs Spaces)及代码优化

首先,这个inconsistent use of tabs and spaces错误是Python里最常见的新手“踩坑点”之一——Python对缩进的一致性要求极其严格,你的代码里同时混合使用了制表符(Tab)和空格来缩进不同代码块,解释器没法判断正确的代码层级结构,所以直接抛出了错误。

第一步:快速修复缩进问题

你需要把代码里的缩进统一成全空格或者全制表符,行业通用且符合PEP8规范的做法是用4个空格代替Tab。大部分代码编辑器(比如VS Code、PyCharm)都自带“将Tab转换为空格”的功能,打开编辑器设置就能找到,一键转换后缩进问题就能解决。

第二步:修复代码里的其他小问题

除了缩进,你的代码还有几个需要调整的细节,才能完美实现拆分大文件的需求:

  • Python里没有counter++这种写法,要改成counter += 1
  • 初始的target = open("function_1.txt", "a+")完全没必要,我们会在遇到第一个分隔符时再创建新文件
  • 直接用open()而不手动关闭文件容易导致资源泄漏,推荐用with语句自动管理文件句柄

修正后的完整代码

# 打开源文件,逐行读取
with open("BIGBLUE.txt", "r") as text_file:
    counter = 1
    current_target = None
    separator = "(* @NESTEDCOMMENTS := 'Yes' *)"
    
    for line in text_file:
        # 检查当前行是否匹配分隔符
        if line.startswith(separator):
            # 关闭上一个目标文件(如果存在)
            if current_target is not None:
                current_target.close()
            # 创建新的目标文件,用w模式确保每次新建/覆盖(需追加可改回a+)
            current_target = open(f"function_{counter}.txt", "w")
            counter += 1
        # 若当前有打开的目标文件,写入行内容
        if current_target is not None:
            current_target.write(line)
    
    # 最后关闭最后一个打开的文件,确保数据写入磁盘
    if current_target is not None:
        current_target.close()

代码说明

  1. 用with语句处理源文件,自动在读取完成后关闭文件,避免资源浪费
  2. 用line.startswith(separator)代替切片匹配,更直观且不易出错
  3. 遇到分隔符时先关闭上一个目标文件,再创建新文件,逻辑更严谨
  4. 最后手动关闭最后一个目标文件,防止缓存数据未写入磁盘

内容的提问来源于stack exchange,提问作者Lucas B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:55:54