文件操作三部曲

  1、打开文件

  2、操作

  3、关闭文件

 

打开文件两种方式

  1、f=open('文件名','模式',encoding='utf-8')拿到操作句柄f,接下来拿着操作句柄进行你的操作,操作完毕一定要关闭文件==f.clos

  2、with open('文件名','模式',encoding='utf-8')as f: 也可以拿到操作句柄f,和第一种相比较,这个方式不需要自己关闭文件,你操作完就不用关了,关闭文件交给python去做

  推荐使用第二种

序列化和反序列化:json(可跨平台)、pickle(只有python可识别)、shelve(了解,不怎么使用)

json模块

import json

  with open('文件名.json','w',encoding='utf-8')as f:

    json.dump(list1,f)这就完了已经操作完成

反序列化

  with open('文件名','r',encoding='utf-8')as f:

    list1=json.loads(f.read())

    print(list1)

    还有一种f.dumps()对应f.load(),会用就可以,很明显dump和loads好用嘛

import pickle #没有学习面向对象编程的暂时了解pickle的基础用发,面向对象编程中才是它大展身手的时候

  with open('文件名','wb')as f:

    f=pickle.dumps(stu)#注意例子中的stu为一个对象 pickle.dumps(stu)这个过程将对象转化为字节流

    f.write()

  with open('文件名','rb')as f:

    stu =pickle.losds(f.read())#这个过程将字节流转化为对象

 

具体的操作看下面的程序



1 '''文件操作
2 打开文件
3 写入内容
4 关闭文件'''
5 '''接下来我们看一下代码实现'''
6 #方法一
7 '''读模式'''
8 open('文件操作.text','w',encoding='utf-8')#打开文件,如果没有就会在同一路径下创建一个 w==write写模式
9 f=open('文件操作.text','w',encoding='utf-8')#赋值给f拿到一个操作句柄 w==write写模式
10 f.write('写入内容')
11 f.close()#关闭文件
12
13 f=open('文件操作.text','r',encoding='utf-8')#赋值给f拿到一个操作句柄 r==read读模式
14 print(f.read())#会全部读出来
15 f.close()
16
17 f=open('文件操作.text','r',encoding='utf-8')#赋值给f拿到一个操作句柄 r==read读模式
18 print(f.readline())#读出第一行
19 print(f.readline())#读出第二行
20 f.close()
21
22 f=open('文件操作.text','r',encoding='utf-8')#赋值给f拿到一个操作句柄 r==read读模式
23 print(f.readlines())#['写入内容\n', '第一行\n', '第二行\n', '第三行']
24 print(type(f.readlines()))#<class 'list'>
25 f.close()
26
27 '''打开文件,操作,关闭==有时候会忘记关闭文件,下面来看第二种方式不需要操作关闭文件,python会在你不需要文件时自己关闭'''
28 #方法二
29 with open('文件操作.text','r',encoding='utf-8') as f:
30 f.read()
31 #其余方法依旧适用
32
33 '''上述方式太low了现在学习一种新的文件写入和读取操作====序列化和反序列化'''
34 #方式一:适用json模块实现序列化
35 import json
36 list1=[1,2]
37 with open('序列化.json','w',encoding='utf-8') as f:
38 x=json.dumps(list1)#序列化数据
39 f.write(x)#写入序列化后的数据
40
41 with open('序列化.json','r',encoding='utf-8') as f:
42 x=json.load(f)#反序列化数据
43 print(x)
44
45 '''json这么使用还是有点繁琐,现在介绍一种简洁的操作方式'''
46
47
48 with open('序列化1.json','w',encoding='utf-8') as f:
49 json.dump(list1,f)#这样就可以啦
50
51 with open('序列化.json','r',encoding='utf-8') as f:
52 print(json.loads(f.read()))
53
54 '''所以总结一下 最好用的序列化操作莫过于dump配合loads'''


pickle序列化和反序列化程序

 



1 import pickle
2 class Student:
3 def __init__(self,name,age):
4 self.name=name,
5 self.sge=age
6 stu_obj=Student('alex',18)
7
8 with open('PICKLE.txt','wb') as f:
9
10 pickle.dump(stu_obj,f)
11
12 with open('PICKLE.txt','rb') as f:
13 x =pickle.loads(f.read())
14 print(x.name)#('alex',)


 补充内容

文件操作、序列化反序列化_序列化

文件操作、序列化反序列化_文件操作_02

 注意上述例子中对于每一行拼接的手法,从一本书中看到,可以了解下