1.对文件进行读写操作时,先建立文件句柄
1 f = open("test.txt","r",encoding="UTF-8")
其中,r为文件操作权限:
r-只读,w-写(新建文件后写),a-追加(f.write()后在最后追加信息),r+读写(追加写),rb二进制文件读(后面不跟encodi)常用来做网络传输及视频文件读写操作。
2.文件读操作
1 f.read() #读取文件 2 f.readline() #读一行 3 f.readlines() #从节点处读取文件并生成一个列表
在读取文件时,有一类似光标的功能。可以对光标进行操作
f.tell() #显示光标位置
f.seek() #将光标移动到指定位置
f.truncate() #从头截取指定光标数的字符,包含空格、标点。
常规情况tell与seek应搭配使用。
用指令将数据从内存中刷新到硬盘中(强制刷新):
1 f.flush()
3.序列化
将内存状态写至文件常用的为json与pickle数据序列化,json序列化存储的文件可作为与java等语言的接口文件,但只能做简单数据的存储。
1 import json 2 info = {"name":"Aaron", 3 "sex":"male", 4 "age":32} 5 f = open("json序列化.txt","w",encoding="utf-8") 6 print(json.dumps(info)) 7 f.write(json.dumps(info)) 8 f.close()
打印数据:{"name": "Aaron", "sex": "male", "age": 32}
json序列化.txt中的数据
{"name": "Aaron", "sex": "male", "age": 32}
将数据存贮至文件中后,反序列化
1 import json 2 f = open("json序列化.txt","r",encoding="utf-8") 3 data = json.loads(f.read())
pickle的序列化与反序列化与json方法一样,但存储的文件为二进制文件
import pickle info = {"name":"Aaron", "sex":"male", "age":32} f = open("json序列化.txt","wb",) #此处应为wb print(pickle.dumps(info)) f.write(pickle.dumps(info)) f.close()
打印出的值:b'x80x03}qx00(Xx04x00x00x00nameqx01Xx05x00x00x00Aaronqx02Xx03x00x00x00sexqx03Xx04x00x00x00maleqx04Xx03x00x00x00ageqx05K u.'
pickle的反序列化
1 import json,pickle 2 f = open("json序列化.txt","rb") 3 data = pickle.loads(f.read()) 4 print(data["name"])