Python文件操作

1.with上下文管理器:为了突出其作用,我们首先来对比正常的文件读写和使用with语句进行文件读写的差别。

f = open("File.txt","w")
f.write("Hello World")
f.close()
#正常的三个步骤,打开文件,操作文件,关闭文件

with open("file.txt", "w") as file:
    file.write("Hello World")
#而使用with语句时,上下文管理器完成了关闭文件的任务

使用上下文管理器最大的优势就是能确保资源的释放,可以在文件使用完毕后,避免手动调用close()带来的资源泄漏问题。

2.pickle模块:解决了永久储存python对象的问题,允许将字符串、列表、字典等对象保存为文件的形式,是一个将python对象序列化的过程(将python对象转换为二进制字节流的过程)

import pickle

x, y, z = 1, 2, 3
s = "Cloud"
l = ["star", 2, 3.14]
d = {"one": 1, "two": 2}

with open("data1.pkl", "wb") as f:
    pickle.dump(x, f)
    pickle.dump(y, f)
    pickle.dump(z, f)
    pickle.dump(l, f)
    pickle.dump(d, f)
    pickle.dump(s, f)

通过dump函数,将对象传入,通过文本文件打开对应的pkl文件得到以下乱码

€K.€K.€K.€?       ]??star擪G@	窺雲e.€?       }??one擪?two擪u.€?       ?Cloud?

接着我们可以通过load()方法进行读取,读取pkl这个二进制文件。

import pickle

with open("data1.pkl", "rb") as f:
    x = pickle.load(f)
    y = pickle.load(f)
    z = pickle.load(f)
    l = pickle.load(f)
    d = pickle.load(f)
    s = pickle.load(f)

print(x, y, z, l, d, s, sep='\n')
## 1
## 2
## 3
## ['star', 2, 3.14]
## {'one': 1, 'two': 2}
## Cloud

为化简代码,我们还可以用元组的形式将对象打包

import pickle

x, y, z = 1, 2, 3
s = "Cloud"
l = ["star", 2, 3.14]
d = {"one": 1, "two": 2}

with open("data1.pkl", "wb") as f:
    pickle.dump((x, y, z, l, d, s), f)

读取时也应该用元组的形式进行解包

import pickle

with open("data1.pkl", "rb") as f:
    x, y, z, l, d, s = pickle.load(f)

print(x, y, z, l, d, s, sep='\n')
## 1
## 2
## 3
## ['star', 2, 3.14]
## {'one': 1, 'two': 2}
## Cloud

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值