详解python中各种文件打开模式

作者:我不会喜欢你 时间:2023-08-30 09:10:30 

在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+模式可以多加应用。

ps:下面看下python文件打开的几种访问模式

访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

总结

以上所述是小编给大家介绍的python中各种文件打开模式网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/bao9687426/p/12209065.html

标签:python,打开,模式
0
投稿

猜你喜欢

  • 解决python3中os.popen()出错的问题

    2022-07-20 23:38:48
  • mysql 数据库安装经验问题汇总

    2024-01-28 11:55:29
  • Python中的单例模式与反射机制详解

    2023-11-24 00:55:54
  • go redis之redigo的使用

    2024-05-22 17:46:37
  • 使用BULK INSERT大批量导入数据 SQLSERVER

    2012-01-05 19:26:36
  • asp源码如何显示数据库字段的结构?

    2010-06-08 09:35:00
  • Python区块链创建Genesis Block教程

    2022-04-17 10:44:15
  • Python 十大经典排序算法实现详解

    2021-10-01 02:55:24
  • FileSystemObject 示例代码

    2008-10-24 08:54:00
  • JS实现网页滚动条感应鼠标变色的方法

    2024-04-18 10:52:44
  • python神经网络编程实现手写数字识别

    2021-08-31 16:08:14
  • Python Flask-Login实现用户会话管理

    2023-06-05 13:13:50
  • 编写Python脚本抓取网络小说来制作自己的阅读器

    2022-11-06 18:51:03
  • 基于python元祖与字典与集合的粗浅认识

    2023-11-11 07:19:48
  • PHP xpath()函数讲解

    2023-06-04 07:03:38
  • 挑战! 纯Javascript 重现经典网游! <魔力宝贝>

    2008-10-04 10:37:00
  • php环境下利用session防止页面重复刷新的具体实现

    2023-11-14 08:51:45
  • SQLServer Execpt和not in 性能区别

    2024-01-21 23:33:46
  • 一起来看看五条Python中的隐含特性

    2023-06-30 12:46:43
  • Python中super函数的用法

    2023-07-09 20:09:40
  • asp之家 网络编程 m.aspxhome.com