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

Edexcel GCSE计算机课程:文件分类程序关键词匹配异常求助

问题排查与修正

核心错误分析

  • 分割逻辑错误:你用line.split(".")把每行内容拆成了列表,但关键词(如INFORMATION)是存在于列表的某个字符串元素里,而不是列表的直接成员。你的check函数是判断关键词是否在这个列表中,自然永远找不到。
  • 违反作业要求:题目明确说无需使用内部数据结构(比如你定义的newFile、info_log这些列表),你的写法既冗余又容易出错。
  • 缺少文件备份步骤:作业要求编写代码前备份现有文件(已存在的Info.log),你的代码完全没处理这一步。

符合要求的修正代码

import shutil

# 先备份已存在的信息日志
INFO_LOG = "Info.log"
shutil.copy(INFO_LOG, f"{INFO_LOG}.bak")

# 定义所有文件名
INPUT_FILE = "Lorem_Ipsum (2).txt"
ERROR_LOG = "Error.log"

# 逐行处理输入文件,直接写入对应日志
with open(INPUT_FILE, "r") as input_file:
    # 以追加模式打开信息日志(保留原有表头),错误日志不存在会自动创建
    with open(INFO_LOG, "a") as info_log, open(ERROR_LOG, "a") as error_log:
        for line in input_file:
            cleaned_line = line.strip()
            if not cleaned_line:
                continue  # 跳过空行
            # 检查关键词并写入日志
            if "ERROR" in cleaned_line:
                error_log.write(line)
            if "INFORMATION" in cleaned_line:
                info_log.write(line)

代码说明

  1. 文件备份:用shutil.copy给Info.log创建备份文件Info.log.bak,满足作业的备份要求。
  2. 无内部数据结构:直接逐行读取输入内容,处理后立即写入日志,没有用列表存储所有数据,符合题目要求。
  3. 正确的关键词判断:直接检查关键词是否在当前行的字符串中,解决了你原代码的判断逻辑错误。
  4. 安全的文件处理:使用with语句自动管理文件的打开和关闭,避免手动关闭文件可能带来的资源泄漏问题。
  5. 追加模式写入:Info.log用a模式打开,不会覆盖原有表头;Error.log不存在时会自动创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:55:20