Python 中的文件读写操作

一、核心功能

‘r’:只读。该文件必须已存在。

‘r+’:可读可写。该文件必须已存在,写为追加在文件内容末尾。

‘rb’:表示以二进制方式读取文件。该文件必须已存在。

‘w’:只写。打开即默认创建一个新文件,如果文件已存在,则覆盖写(即文件内原始数据会被新写入的数据清空覆盖)。

‘w+’:写读。打开创建新文件并写入数据,如果文件已存在,则覆盖写。

‘wb’:表示以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,则覆盖写。

‘a’:追加写。若打开的是已有文件则直接对已有文件操作,若打开文件不存在则创建新文件,只能执行写(追加在后面),不能读。

‘a+’:追加读写。打开文件方式与写入方式和’a’一样,但是可以读。需注意的是你若刚用‘a+’打开一个文件,一般不能直接读取,因为此时光标已经是文件末尾,除非你把光标移动到初始位置或任意非末尾的位置。(可使用seek() 方法解决这个问题,详细请见下文Model 8 示例)

看似那么多模式,无非是三大类:

读r(read),写w(write),追加a(append)
二、示例解说

Model 1: r —只读模式

注意:test.txt 必须文件是已存在的。顺便说一下字符编码。因为Windows操作系统默认字符编码为GBK,而Python默认Unicode.utf-8,如果不写“ encoding=‘utf-8’ "就会报错。

f = open("test.txt", "r", encoding = "utf - 8")
print(f.readline()) # 打印文件内容首行数据

Model 2: r+ —可读可写模式

f = open("test.txt", "r+", encoding = "utf - 8")
f.write("you are the best")  #在文件text.txt 最后再添加一句话
print(f.seek(0))  # seek(0)为将光标 调回到文件头
print(f.read()) # 打印text.txt 的全部内容
print(f.readline()) # 打印文件内容首行数据

Model 3: rb —以二进制方式读取文件

f = open("test.txt", "rb“)
print(f.read()) #以二进制方式返回

Model 4: w —只写模式

# 用w创建一个新文件并写入数据,或打开已有文件并写入数据,文件内容清空覆盖
f = open(”text.txt“, "w", encoding = "utf - 8")
f.write("Write something ...\n All  is well\n")

Model 5: w+ —写读模式

# 用w+创新文件,或打开已有文件,并写入数据(文件内容清空覆盖),只写不能都
f = open(”text.txt“, "w+", encoding = "utf - 8")
f.write("You can be better \n Fighting\n")

Model 6: wb+ —以二进制方式读写文件

# 以二进制读写(wb+)文件,如果文件已经存在,文件内容清空覆盖
f = open(”text.txt“, "wb+", encoding = "utf - 8")
f.writr("hello world".encode("utf - 8"))
print(f)
 

Model 7: a —追加写模式

# 追加写,文件不存在则创建新文件;若文件已存在则直接对已有文件进行操作,只能执行写(追加在后面),不能读
f = open("test.txt", "a", encoding = "utf - 8')
f.write("You can be better \nFighting\n")

Model 8: a+ —追加读写模式

f = open("test.txt", "a+", encoding = "utf - 8")
f.write("You are the best \n")
print(f.readline(2))
f.seek()  # 使文件光标回到文件头(也可以自定义把光标移动到任意非末尾的位置)
print(f.read())  #重读文件,此时打印文件全部内容
三、附加干货

以下是文件操作中常用的一些方法:

print(f.readline())    # 打印一行
print(f.readline(5))   # 打印前5个字符
print(f.tell())        # 打印当前指针位置
print(f.read())        # 读完文件后,指针在最尾处
f.seek(0)              # 如要重头到尾再读,文件指针须先回到文件头(0-文件头,默认值; 1-当前位置; 2-文件尾)
print(f.read())        # 重读文件
print(f.encoding)      # 打印当前使用的字符编码
print(f.name)          # 打印文件名
print(f.flush())       # 刷新
f.truncate()           # 清空文件
f.truncate(12)         # 从头开始,第12个字符后截断并清除
f.close()              # 关闭文件

作者:宁晃
链接:https://www.cnblogs.com/wujiaqing/p/10690265.html
来源:cnblogs
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值