Python:刚创建写入的文件读取返回空列表,求助原因
问题原因与解决办法
你遇到的问题核心是文件指针位置的问题:
当你调用write()写入内容后,文件内部的指针会停留在写入内容的末尾。此时执行readlines(),会从当前指针位置开始读取到文件结尾,自然读不到任何内容,所以返回空列表[]。虽然文件关闭后内容会被写入磁盘(所以你手动打开能看到内容),但程序读取时指针位置不对,就会出现这种“写入了但读不到”的情况。
解决方法
方法1:写入后移动文件指针到开头
在读取前调用seek(0),把指针移回文件起始位置,就能读取到刚写入的内容:
FileObject = open('Fileobject.txt', 'x+') FileObject.write("testing") FileObject.seek(0) # 移动指针到文件开头 print(FileObject.readlines()) FileObject.close()
方法2:关闭文件后重新打开读取
关闭文件会确保内容写入磁盘,重新打开时指针默认在开头,就能正常读取:
# 写入文件 FileObject = open('Fileobject.txt', 'x+') FileObject.write("testing") FileObject.close() # 重新打开读取 with open('Fileobject.txt', 'r') as f: print(f.readlines())
方法3:使用with语句(推荐)
with语句会自动管理文件的打开和关闭,写法更简洁安全:
with open('Fileobject.txt', 'x+') as f: f.write("testing") f.seek(0) print(f.readlines())
内容的提问来源于stack exchange,提问作者MarcRK
相关产品推荐
相关产品推荐

