python基础十 文件操作
[toc]
#python基础十 文件操作
1.文件操作
1.1 作用
持久化存储
1.2 文件操作总结
f = open(file="文件名字或文件路径",mode="操作模式",encoding="编码")
r 只读
w 清空写
a 追加写
rb 只读字节
wb 清空写字节
ab 追加写字节
r+ 读写
w+ 清空写读
a+ 追加写读
1.3 文件操作
1.3.1 只读文件 --> r
r: 读文本
f = open("test.txt",mode="r",encoding="utf-8")
#参数说明
f 变量名,句柄
open 表示打开文件,通过python向操作系统发送指令
test.txt 表示要操作的文件
mode 指定 对文件的操作方式,r表示读取
r 表示读取文件
encoding 指定字符集
⚠️文件读取时只能读一遍
在py同级目录下创建一个文件txt.txt,并写入以下内容
一只奔跑的草泥马
abc
123
1.全部读取 print(f.read())
f = open("txt.txt",mode="r",encoding="utf-8")
print(f.read())
一只奔跑的草泥马
abc
123
2.r模式下按照字符读取 print(f.read(3))
f = open("txt.txt",mode="r",encoding="utf-8")
print(f.read(5))
一只奔跑的
3.读取一行 print(f.readline().strip()) 读取一行默认最后有换行符,需要去掉
f = open("txt.txt",mode="r",encoding="utf-8")
print (f.readline().strip())
一只奔跑的草泥马
4.读取多行,以列表的形式存储 print(f.readlines())
f = open("txt.txt",mode="r",encoding="utf-8")
print (f.readlines())
['一只奔跑的草泥马\n', 'abc\n', '123']
//读取总结
print(f.read()) #全部读取
print(f.read(3)) #模式的r的情况下按照字符读取
print(f.readline().strip()) #读取一行
print(f.readlines()) #读取多行,以列表的形式存储
1.3.2 清空写 --> w
w: 清空写文本
f = open("txt.txt",mode="w",encoding="utf-8")
清空写会把要操作的文件先清空,然后再写入
//w模式打开文件后会清空文件内容
f = open("txt.txt",mode="w",encoding="utf-8")
print (f)
txt.txt文件中的内容会被清空
//写入内容
f = open("txt.txt",mode="w",encoding="utf-8")
print (f.write("呵呵\n哈哈"))
5
txt.txt文件中的内容为如下,并且光标在最开头
呵呵
哈哈
//连续写会从文件最后开始写
f = open("txt.txt",mode="w",encoding="utf-8")
print (f.write("呵呵\n哈哈"))
print (f.write("嘻嘻\n嘿嘿"))
5
5
txt.txt文件中的内容如下,并且光标在最开头
呵呵
哈哈嘻嘻
嘿嘿
//对文件写操作后,需要刷新和关闭文件
f = open("txt.txt",mode="w",encoding="utf-8")
print (f.write("呵呵\n哈哈"))
print (f.write("嘻嘻\n嘿嘿"))
print (f.write("啦啦\n吼吼"))
f.flush()
f.close()
5
5
5
txt.txt文件中的内容如下,并且光标在最开头
呵呵
哈哈嘻嘻
嘿嘿啦啦
吼吼
1.3.3 追加写 --> a
a: 追加写文本
f = open("txt.txt",mode="a",encoding="utf-8")
//追加写文本 只会在同一行追加
f = open("txt.txt",mode="a",encoding="utf-8")
print (f.write("呵呵"))
print (f.write("哈哈"))
print (f.write("嘿嘿"))
txt.txt文件内容如下,并且光标在最开头
呵呵哈哈嘿嘿
1.3.4 只读字节 --> rb
⚠️二进制方式读取文件不能指定字符集
f = open("txt.txt",mode="rb",encoding="utf-8")
print (f.read())
ValueError: binary mode doesn't take an encoding argument
//txt.txt文件中的内容为 呵呵哈哈嘿嘿
f = open("txt.txt",mode="rb")
print (f.read())
b'\xe5\x91\xb5\xe5\x91\xb5\xe5\x93\x88\xe5\x93\x88\xe5\x98\xbf\xe5\x98\xbf'
以上的字节的内容就是 呵呵哈哈嘿嘿