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

Python读取file1.txt前两行写入file2.txt并打印的代码报错求助

代码错误点排查

你的代码一共有4处明显问题,直接导致运行异常或逻辑不符合需求:

  • 转义字符写错:换行符是反斜杠开头的"\n",你写的正斜杠"/n"是普通字符串,写入文件后不会产生换行效果,反而会多出无意义的/n字符。
  • 打印逻辑完全错误:print(b)打印的是文件对象的内存地址,不是file2.txt的文件内容,根本没有实现「读取file2.txt内容打印」的需求。
  • 重复关闭文件报错:用with语句打开的文件,会在with代码块结束时自动关闭,你在块外手动调用b.close()会触发I/O operation on closed file报错。
  • 文件资源泄漏风险:打开file1.txt时没有用上下文管理器,如果中间代码抛异常,file1的文件句柄不会被正常释放。
修正后可直接运行的代码
read_line_count = 2

# 读取file1.txt前两行
with open("file1.txt", "r", encoding="utf-8") as f1:
    target_lines = []
    for _ in range(read_line_count):
        line = f1.readline()
        # 读到文件末尾时readline返回空字符串,直接终止循环避免写空行
        if not line:
            break
        target_lines.append(line)

# 写入file2.txt
with open("file2.txt", "w", encoding="utf-8") as f2:
    f2.writelines(target_lines)

# 读取file2.txt内容并打印
with open("file2.txt", "r", encoding="utf-8") as f2:
    print(f2.read())
关键修正说明
  • 所有文件操作统一用with上下文管理器,不需要手动调用close(),自动处理资源释放,不会出现泄漏或者重复关闭的报错。
  • 去掉了多余的换行符拼接:readline()读取的每行内容本身已经带了行尾的换行符,直接写入即可,不需要额外拼接换行。
  • 写完file2.txt之后重新以读模式打开文件,读取完整内容后打印,符合需求要求。
  • 增加了空行判断:如果file1.txt实际行数不足2行,读到文件末尾就直接终止循环,不会往file2.txt里写入多余空行。
  • 显式指定encoding="utf-8",避免Windows等系统默认GBK编码导致的中文乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 01:12:26