python文件读取操作、序列化

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'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x05\x00\x00\x00Aaronq\x02X\x03\x00\x00\x00sexq\x03X\x04\x00\x00\x00maleq\x04X\x03\x00\x00\x00ageq\x05K u.'

 pickle的反序列化

1 import json,pickle
2 f = open("json序列化.txt","rb")
3 data = pickle.loads(f.read())
4 print(data["name"])

 

posted @ 2018-10-30 23:06  银色的音色  阅读(465)  评论(0编辑  收藏  举报