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
相关产品推荐
相关产品推荐

