python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

您所在的位置:网站首页 以追加的方式打开文件需使用的字符为 python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

2024-07-09 14:41| 来源: 网络整理| 查看: 265

文件读写操作分为三大类:读r(read),写w(write),追加a(append)

一、功能

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

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

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

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

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

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

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

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

二、示例

(1)r --- 只读模式

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

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

(2)r+ --- 可读可写模式

f = open("test.txt", "r+", encoding="utf-8") f.write("Hello World!") # 再加一句写入test.txt文件后面 print(f.seek(0)) # seek(0)代表将光标回到头文件(如果从头到尾再读,文件指针必须先回到文件头) print(f.read()) # 读取打印test.txt文件全部内容

(3)rb --- 以二进制方式读取文件

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

(4)w --- 只写模式 用w创建一个新文件并写入数据,或打开已有文件并写入数据,文件内容清空覆盖

f = open("test.txt", "w", encoding="utf-8") f.write("Hello World!\n")

(5) w+ --- 写读模式

用w+创建新文件,或打开已有文件,并写入数据(文件内容清空覆盖),只写不能读。

f = open("test.txt", "w+", encoding="utf-8") f.write("Hello World!")

(6) wb+ --- 以二进制方式读写文件

以二进制读写(wb+)文件, 如果文件已存在,文件内容清空覆盖

f = open("test.txt", "wb+") f.write("Hello World".encoding("utf-8")) print(f)

(7) a --- 追加模式

追加写,若文件不存在则创建新文件,若已有文件则直接对已有文件操作,只能执行写(追加在后面),不能读

f = open("test.txt", "a", encoding="utf-8") f.write("Hello World")

(8) a+ --- 追加读写模式

f = open("test.txt", "a+", encoding="utf-8") f.write("Hello World!") print(f.readline(2)) 打印前两行,此时没有返回数据 # 没有返回数据,是因为文件已经读完了,文件指针在文件最后面,因此不会从头到尾再读一遍,如果要从头到尾再读,使用seek()方法, f.seek(0) # 是文件光标先回到文件头(也可以自定义把光标移动到任意非末尾位置) 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() # 关闭文件


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3