Python文件读写--错误一
【Python文件读写--错误一】在学习python的文件读写操作的时候,我遇到了一点麻烦事,觉得可以记录下来,先上代码吧。
with open('test.txt') as file:
file.write('test')
print(file.read())
我的目的很简单,就是以默认的a模式打开文件,并在文件末尾写入'test',然后把最新的文件读出来,可谁知当我运行的时候,竟然报错。认真查阅书本,才想起来a模式是不支持read()的,然后修改为a+模式,代码如下:
with open('test.txt','a+') as file:
file.write('test')
print(file.read())
本以为又要成功了,谁知内容是写进去了不错,但是输出是空的,就是文件读不出来。问了高人后,又是一个细节暴露了出来。原来这里牵涉到读写模式对文件中指针位置的影响,大家可以到网上搜一下,这里我只讲a+模式。a+模式以追加的模式打开一个文件用于读写。如果文件存在,则打开文件,将文件指针定位在文件尾,新写入的内容在原有内容的后面;如果文件不存在,则创建一个新文件用于读写。read()是从光标处向后读,也就是说read()之前,光标已经到了文件的末尾,因此也就读不出来内容了。这里我们要用到seek(0)来把光标重置到文件开头。最终代码如下:
with open('test.txt','a+') as file:
file.write('test')
file.seek(0)
print(file.read())
终于正常了,哈哈,希望自己可以永远记住这几点。
推荐阅读
- 关于虚拟机与主机的共享文件夹
- Linux基础|第十一篇(C语言终篇)typedefy关键字,自定义头文件,GCC编译过程中文件转化,宏定义和条件编译详解。
- C语言进阶之文件操作详解
- 用Python实现爬取百度热搜信息
- PEER|Python整理PEER所下载的地震波源数据——提取地震波至txt+生成地震波反应谱
- C++|C++ std::shared_mutex读写锁的使用
- Springboot集成minio实现文件存储的实现代码
- 阿里一面(ReadWriteLock 读写之间互斥吗(我竟然答不上来。。))
- python|100天精通Python(基础篇)——第28天(标准库os)
- python|100天精通Python(基础篇)——第29天(标准库sys)