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

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()

关键优化说明

  1. 用with语句打开文件:无需手动调用close(),文件会在代码块结束后自动关闭。
  2. 捕获具体异常:替换宽泛的except:,能明确区分是文件缺失还是其他运行错误,方便调试。
  3. 去掉冗余操作:split()方法会自动处理所有空白字符,不需要手动去除换行符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:47:34