Python代码运行输出error occured,疑因用read()而非readlines()求排查
问题分析与修复方案
你的代码报错确实和read()的使用有关,但还有几个语法和逻辑上的错误,下面逐一拆解并给出修复方案:
核心错误点
read()返回字符串而非列表:你用read()把文件内容读成了完整字符串,却把它当成列表去遍历修改——字符串是不可变类型,直接textfile[i] = ...会触发TypeError。- 缩进错误:
for循环下的语句没有缩进,这是语法级错误,直接导致脚本无法运行。 - 冗余的换行符处理:后续调用
split()会自动忽略换行符和空白,手动rstrip('\n')完全没必要。 - 异常捕获太宽泛:
except:会掩盖所有错误,无法定位具体问题。
修复后的两种可行写法
写法1:用read()直接处理(更简洁)
def main(): try: # 用with语句自动管理文件关闭,避免资源泄漏 with open('text1.txt', 'r') as inputFile: text_content = inputFile.read() # split()自动按所有空白(换行、空格等)分割成单词列表 words = text_content.split() print('文件中的单词数量是:', len(words)) except FileNotFoundError: print('错误:找不到text1.txt文件') except Exception as e: print(f'发生错误:{str(e)}') main()
写法2:用readlines()读取(符合你的推测方向)
def main(): try: with open('text1.txt', 'r') as inputFile: # readlines()返回每行内容组成的列表(每行带换行符) lines = inputFile.readlines() words = [] for line in lines: # 对每行分割单词并追加到总列表 words.extend(line.split()) print('文件中的单词数量是:', len(words)) except FileNotFoundError: print('错误:找不到text1.txt文件') except Exception as e: print(f'发生错误:{str(e)}') main()
关键优化说明
- 用
with语句打开文件:无需手动调用close(),文件会在代码块结束后自动关闭。 - 捕获具体异常:替换宽泛的
except:,能明确区分是文件缺失还是其他运行错误,方便调试。 - 去掉冗余操作:
split()方法会自动处理所有空白字符,不需要手动去除换行符。
内容的提问来源于stack exchange,提问作者IRISH_PINEAPPLE
相关产品推荐
相关产品推荐

