python文件读取操作、序列化

本文详细介绍了Python中文件的基本操作,包括读写、追加、读取位置控制,以及如何使用json和pickle进行数据的序列化和反序列化。通过实例展示了不同文件操作模式的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"])

 

转载于:https://www.cnblogs.com/yinsedeyinse/p/9853694.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值