Python程序触发EOFError时无法打印文件内容,请求排查问题
问题定位与修复
问题原因
核心问题是文件指针位置错误:用a+模式打开文件时,文件指针默认处于文件末尾。当你写入多个姓名后,指针停在文件最后一行的末尾,此时调用readlines()会从当前指针位置开始读取,自然读不到任何内容。
修复后的代码
file1 = open("names.txt",'a+') try: while True: name = input("Whats your name: ") file1.write(name) file1.write('\n') file1.flush() # 确保写入内容同步到磁盘 except EOFError: file1.seek(0) # 将文件指针移回文件开头 lines = file1.readlines() for line in lines: print('hello', line.strip()) # 去掉换行符避免重复空行 file1.close()
关键修改点
file1.seek(0):强制将文件指针移到文件起始位置,这样读取时就能获取到所有已写入的内容。file1.flush():写入后立即刷新缓冲区,确保内容真正写入磁盘,避免读取到旧的缓存内容。line.strip():去除每行末尾的换行符,解决打印时出现多余空行的问题。
内容的提问来源于stack exchange,提问作者Big_Port
相关产品推荐
相关产品推荐

