1. 文件的两种打开方式
方式一:打开后复制给句柄,句柄操作文件
句柄 = oopen(文件路径,操作模式,编码格式)
其中操作模式有三种:
r 只读模式 只能读不能写
w 只写模式 只写不能读
a 只追加模式 文件数据末尾添加内容
方式二:使用with关键字,自动打开和自动关闭文件
2. 文件的读写方式
2.1 r 只读模式
只能读不能写
文件不存在时会报错
with open('a.txt', 'r', encoding='utf-8') as f: data = f.read()
2.2 w 只写模式
只能写不能读
文件不存在时会自动创建一个文件
w模式又称覆盖写模式,每一次写入数据时都将文件原本的内容清空,再写入新的数据
with open('c.txt', 'w', encoding='utf-8') as f: f.write('Lionel Messi')
2.3 a 只追加模式
如果文件不存在则新建文件并写入数据
文件数据末尾添加新的数据
with open('d.txt', 'a', encoding='utf-8') as f: f.write('Neymar')
3. 文件的操作方式
3.1 + 模式
让原本的模式扩展出新的模式
r+ 既能读又能写 这种模式下的写是覆盖写
w+ 既能写又能读
不建议采用 + 模式,对于一个文件来说要么就是向其中写入数据,要么就是从其中读取数据
3.2 b模式
二进制模式 可以操作任意类型的文件
r rb b不可省略
w wb b不可省略
a ab b不可省略
1. 该模式可以操作任意类型的文件
2. 该模式一定不能指定encoding参数
3. 该模式读写都是以byte类型(二进制)为最小单位
将以上读取到的二进制数据写入到一个新的文件
3.3 文件读写代码举例
# 先写入一个列表 # num_list = [1, 2, 3] # write() argument must be str, not list # with open("1.text", "w", encoding="utf-8") as fp: # fp.write(str(num_list)) # 再读取出来 # with open("1.text", "r", encoding="utf-8") as fp: # data = fp.read() # print(data, type(data)) # <class 'str'> # with open("2.text","a",encoding="utf-8") as fp: # fp.write("dream|521|666" + "\n") ''' user_data = {} with open("2.text", "r", encoding="utf-8") as fp: data = fp.read() for i in data.split(): username, password, hobby = i.split("|") user_data[username] = { "username": username, "password": password, "hobby": hobby } print(user_data) '''
4. 文件操作的内置方法
4.1 r模式的内置方法
f.read() 一次将内容全部读取出来
f.readline() 只读取一行的数据
f.readlines() 读取所有数据,但是每一行数据是列表中的一个元素
for i in f: 句柄可以被遍历,遍历得到的每一个元素是行
f.readable() 判断当前句柄对象是否可读
4.2 w模式的内置方法
f.write() 一次将所有内容全部写入
f.writelines(列表) 将列表中的每一个元素首尾拼接后一次写入
f.writeable() 判断当前句柄对象是否可写
在没有退出with语句之前,连续write是可以持续写入数据的
标签:fp,文件,encoding,写入,模式,操作,data From: https://www.cnblogs.com/hbutmeng/p/18319405