在python中,总的来说有三种大的模式打开文件,分别是:a, w, r

当以a模式打开时,只能写文件,而且是在文件末尾添加内容。

当以a+模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发现读出来的数据为空,是因为a+模式是在文件末尾添加内容,所以其指针已经指到了文件末尾,所以读出来的数据就是空的。

# 在文件末尾添加数据
f = open('test.txt','a+')
f.write('test')
f.close()
# 读出数据为空
f = open('test.txt','a+')
print(f.read())
# 读出数据
f = open('test.txt','a+')
f.seek(0) # 将指针移动到首个字符前
print(f.read())

当以w模式打开时,只能写文件,而且会直接将之前的数据给丢失。

当以w+模式,可读可写,但是如果想读取的内容的话,只能在写内容的时候,同时读取其中的内容,相当于只能读取出你刚刚写入的内容,没有意义

f = open('test.txt', 'w+')
f.write('我不会喜欢你')
f.seek(0)
print(f.read())
f.close()

当以r模式打开文件时,只能读取文件。

当以r+模式打开文件时,可读可写文件。如果是读取文件,会从首个字符开始读取数据,如果是以该模式打开文件,就写数据,则会从首个字符开始写,并一个一个字符的向后面覆盖。如果想从末尾添加内容,则可先read()然后在向其中添加数据。

# 第一次写入内容
f = open('test.txt', 'r+')
f.write('我不会喜欢你') # 内容为:我不会喜欢你
f.close()
# 第二次写入
f = open('test.txt', 'r+')
f.write('其实我')
f.close() # 内容为: 其实我喜欢你 # 第三次写入
f = open('test.txt', 'r+')
print(f.read()) # 内容为: 其实我喜欢你
f.write(', I love you')
f.close() # 内容为: 其实我喜欢你, I love you

自我感觉r+模式可以多加应用。

最新文章

  1. 隐藏Jquery dialog 按钮
  2. Magicodes.WeiChat——利用纷纭打造云日志频道
  3. 来一场说走就走的骑行---23KM的上班探路行动圆满结束
  4. BZOJ 4318: OSU! 期望DP
  5. 未能加载文件或程序集“ RevitAPIUI.dll”
  6. DP思想笔记
  7. SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何正确使用三维地图控件和工程树控件
  8. ubuntu14.04安装tun/tap网络设备
  9. Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true
  10. go thrift报错问题--WriteStructEnd
  11. abp项目中无法使用HttpContext.Current.Session[""]的问题
  12. Android--自定义半圆环型进度(带动画)
  13. centos 下 mysql+keepalived实现双主自由切换
  14. 用MyEclipse JPA创建项目(二)
  15. LeetCode题解之Reverse Bits
  16. ubuntu下如何查看软件安装目录以及安装版本
  17. 腾讯云 Linux 挂载数据盘
  18. npm安装出错Unexpected end of input at 1:2307
  19. github blog
  20. Jenkins访问路径配置自定义的相对路径

热门文章

  1. 后缀数组 + LCP加速多模式匹配算法 O(m+logn)
  2. Python--day32--struct模块定制报头理论(什么是网络协议?网络协议的本质是什么?)
  3. H3C 环路避免机制五:抑制时间
  4. H3C DHCP服务器显示及维护
  5. java 内省 了解JavaBean
  6. vue项目多列导入
  7. linux 老式 PCI 探测
  8. 【52.55%】【BZOJ 4520】K远点对
  9. vue-learning:4-template-v-if-and-v-show
  10. Google 浏览器设置打开超链接到新窗口标签页