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()
代码说明
- 用
with语句处理源文件,自动在读取完成后关闭文件,避免资源浪费 - 用
line.startswith(separator)代替切片匹配,更直观且不易出错 - 遇到分隔符时先关闭上一个目标文件,再创建新文件,逻辑更严谨
- 最后手动关闭最后一个目标文件,防止缓存数据未写入磁盘
内容的提问来源于stack exchange,提问作者Lucas B
相关产品推荐
相关产品推荐

