一、文件的创建
二、文件的写入
三、文件的关闭
四、文件的with语句
五、文件的读取
六、文件对象的其他方法
七、CSV文件
八、pickle实现序列化与反序列化
一、文件的创建
1.使用open()函数进行创建文件,语法:
open(文件名[,打开方式])
2.文件的打开方式:
模式 | 说明 |
r | 以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式 |
w | 打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件 |
a | 打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
rb | 以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头。这是默认模式 |
wb | 以二进制格式打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件 |
ab | 以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入 |
r+ | 打开一个文件用于读写,文件指针将会放在文件的开头 |
w+ | 打开一个文件用于读写,如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
a+ | 打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式,如果该文件不存在,创建新文件用于读写 |
rb+ | 以二进制格式打开一个文件用于读写,文件指针将会放在文件的开头 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新:文件用于读写 |
注意:没有增加模式“b"默认创建文本文件对象,处理基本单元是”字符”,对于二进制模式“b"创建二进制文件对象,处理的基本单元是“字节”
二、文件的写入
利用write(a)方法将字符串列表写入文件
利用writelines(b)方法将字符串列表写入文件,不添加换行符
三、文件的关闭
1.利用close()方法进行关闭
f=open(r"b.txt","w")
f.write("Good afternoon!")
f.close()
2.借用异常机制finally进行close()关闭,实现无论何种情况都能关闭打开的文件对象
try:
f=(r"b.txt","w")
f.write("school")
except BaseException as e:
print(e)
finally:
f.close()
四、文件的with语句(上下文管理器)
无论什么原因跳出with块,都可以确保文件正确关闭
with open(r"a.txt","w") as f:
f.write("I am fine")
五、文件的读取
1.read([size]):从文件中读取size个字符,并作为结果返回,无size参数,则全部读取,会返回空字符串
2.readline():读取一行内容作为结果返回,读取到文件末尾,会返回空字符串
3.readlines():文本文件中,每一行作为一个字符串存入列表中,返回该列表
with open(r"b.txt","r") as f:
print(f.read())
4.使用迭代器读取
with open(r"b.txt","r") as f:
for a in f:
print(a,end="")
六、文件对象的其他方法
方法 | 说明 |
tell() | 返回文件指针的当前位置 |
seek(offset[,whence]) | 将文件指针移动到新位置,offset表示相对于whence的位置 offset为正时往结束方向移动,为负往开始移动 whence: 0:从文件头开始计算 1:从当前位置计算 2:从文件为计算 |
truncate([size]) | 无论指针在哪,只留下指针前size个字节内容,其余全部删除 若未传入size,则从指针当前位置到末尾全部删除 |
flush() | 缓冲区内容写入文件但不关闭文件 |
七、CSV文件操作
1.CSV文件:逗号分隔符文本格式
值无类型,所有值都是字符串
不能指定字体颜色等样式
不能指定单元格宽高,不能合并单元格
没有多个工作表
不能嵌入图像图表
2.CSV文件读取和写入
import csv with open("a.csv","r")as f: a_csv=csv.reader(f) print(list(a_csv)) with open("b.csv","w")as f: b_csv=csv.writer(f) b_csv.writerow(["ID","姓名","年龄"]) b_csv.writerow(["1001","小明","18"]) b_csv.writerow(["1002","小红","19"]) b_csv.writerow(["1003","小兰","20"])
八、使用pickle实现序列化与反序列化
1.序列化指将对象转化成”串化行“数据形式,存储到硬盘或通过网络传输到其他地方
反序列化指相反过程,将读取到的”串化行“数据转化成对象
方法 | 说明 |
pickle.dump(obj,file) | obj指要被序列对象,file指存储文件 |
pickle.load(file) | 从file读取数据,反序列化成对象 |
序列化:
import pickle
with open(r"d:\data.dat","wb") as f:
a1="小明"
a2=123
a3=[10,20,30]
pickle.dump(a1,f)
pickle.dump(a2,f)
pickle.dump(a3,f)
反序列化:
import pickle
with open(r"d:\data.dat","rb")as f:
a1=pickle.load(f)
a2=pickle.load(f)
a3 = pickle.load(f)
print(a1)
print(a2)
print(a3)
小明
123
[10, 20, 30]