python文件操作中的坑
2021/10/30 17:43:20
本文主要是介绍python文件操作中的坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
r模式下只能读 ,文件不存在就报错,不存在覆盖问题
with open('login-info.txt',encoding='utf-8',mode='r') as f: t=f.read() print(t)
正常输出:
文件不存在就报错
r+模式下可读可写,文件不存在就报错,写文件的时候它是会覆盖前面的内容
with open('login-info.txt',encoding='utf-8',mode='r+') as f: t=f.read() print(t)
正常输出:
文件不存在就报错
w模式下,只能写,如果文件不存在就创建, 写文件的时候它是会覆盖前面的内容
with open('l.txt',encoding='utf-8',mode='w') as f: f.write('666')
可以看到正常写:
注意的是.只能写入字符串,写入数字会直接报错,就算你使用bytes模式.也得将666转成bytes类型
a模式下,只能写,如果文件不存在就创建,不会覆盖,会在文件末尾追加
with open('l.txt',encoding='utf-8',mode='a') as f: f.write('555') f.write('444') f.write('111')
可以看到:
当然你也可以加’\n’来进行换行
a+模式下,只能写,如果文件不存在就创建,不会覆盖,会在文件末尾追加
这里有个坑:
在Python中读取文本使用a+模式打开文本文件,直接读取文件返回的数据为空,
原因是因为read方法取到的是光标之后的数据,而a+是追加文本,光标默认在最后,所以取到的数为空
解决方法:
需要使用f.seek(0),将光标移动到下标为0的位置后,再使用f.read()方法就可以取到全部数据。
还是刚才这个文件
with open('l.txt',encoding='utf-8',mode='a+') as f: t=f.read() print(t)
你会发现,你什么都读不出来.你会疑惑,因为文件里明明有东西.这就是光标的问题了!
因为a+模式下,光标在末尾,他是末尾追加模式,而读文件是从光标的位置开始,往后面读,但是后面没有内容了.所以就是空
解决方法也很简单,将光标移动到你想读的地方就好了
比如:
with open('l.txt',encoding='utf-8',mode='a+') as f: f.seek(0) t=f.read() print(t)
运行截图:
这篇关于python文件操作中的坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-30Python中''') 是什么?-icode9专业技术文章分享
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程