00:00
OK,同学们,那么接下来啊,要跟各位同学分享一下啥呢?分享一下这个序列化和反序列化,那啥叫序列化和反序列化呢?我们得聊一聊,首先呢,同学们看哈,如果呀,我们通过文件操作啊,我们现在呢,可以将字符串写到一个本地文件中,对不对?哎,写像之前写的啥呢?Hello word,但是说呢,如果我们要将一个对象。对吧,像这个列表啊,像字典呢,像元组等,其实呢,我们就无法将这个写到一个文件中,一会我们来用案例来证明它啊,那我们就咋办呢?我们需要将这个对象进行序列化,然后才能写到文件里,那有同学可能就有点懵了,老师,啥叫序列化呀,对吧?啥叫序列化呀?实际上呢,它就是以设计的一套协议,按照某种规则将内存中的数据转换为字节序列,然后给它保存到文件中,这就序列化。
01:10
啊,啥意思啊,就是将内存中数据是不是就是列表啊,字典呢,元组等,然后我们把它变成啥,变成一个字节序列。啊,变成字节序列,我们把这种东西呢叫做序列化,反之从文件中的字符序列又恢复到内存中,又变成啥呀,诶这个对象了,我们就把它叫做反序列化,在这呢,我们可以细节的描述一下,假如说。对象变成谁呀,变成字节序列,我们把这个动作啊叫做啥呀,叫做序列化,那么说如果字节序列变成谁啊,变成这个呃,对象,那么我们把这个就叫啥呀,叫做反序列化,哎,大家先有点印象啊,一会儿我们用代码来实现,那么至于说序列化和反序列化这个东西我们怎么去做呢?同学们,我们使用啊Python中的杰森这个模块来实现这个序列化和反序列化啊,来用它来实现。
02:20
OK,同学们,那么紧接着我们先写一个小小的案例,看一下是不是这样的,难道这个列表就不能写到这个文件中吗?对吧?我们先看一下啊,假如说在这里我先创建一个文件啊,起个名字啊,假如说叫049,这个叫文件的序列化和反序列化啊,反序列化,OK,那现在大家看哈,假如说我现在创建一个文件FP等于open open,然后写上啥呢?假如说我把原来的给它删掉啊,你来给它删掉。嗯,在这里边呢,我们创建一个新的文件叫test.tst,然后写嘛,完了写入嘛,对吧?使所以是WFP.right来写一句话叫hello word w LD啊hello word,然后接下来你写完之后千万不要忘记给它关闭啊同学们,也就是说现在呀,我往这个文件中啊,往这个文件中写了一个小字符串,对吧?来我们运行一下子啊,走你。
03:30
哎,没有报任何错,我们看这里边有没有啊,诶有hello word很好哈,所以说默认情况下,同学们注意啊,默认情况下啊,我们使用啊,我们只能将谁呀字符串写入到文件中,这是默认情况下啊,那我说老师那这个还不简单呢,是吧,我写个对象不就完事了吗?写呀,来看啊FP。等于open来打开这个文件啊,来创建一下它,然后写一个W,然后接下来FP.right来写一个什么呀,我们先随便写一个这个列表吧,假如说在这写一个name list里边有个值,假如说叫张三。
04:21
对吧,张三再来一个,再来一个李四,OK,同学们,那我能不能将它写入到这个文件中呢?我们来看一眼啊,来右键走,那同学们你发现报错了。他报的错是啥呀?我们来简单翻译一下啊,说这个right呀,它的一个参数必须要是一个字符串,而不能是什么列表,对吧?所以说通过这个我们就能证明啥,这个write方法中它不能去写对象,听懂了吗?各位,这也就是说啥呀?哎,如果是一个对象就无法写入到文件中,所以此时我们要干啥了,我们要讲序列化了啊,我们要讲序列化了,OK,同学们,那这个问题倒是怎么解决呢?注意注意啊,同学们说。
05:14
默认情况下啊,对象是无法写入到文件中的啊,如果想写入到文件,那么必须使用序列化操作啊,序列化操作OK同学们,那接下来呀,就给大家讲一下啥呢?序列化的两种方式,记住啊,是序列化的两种方式。那第一个叫啥呢?来写在这啊,叫序列化的两种方式,那这两种方式分别是啥呢?第一种叫dumps啊,Dump这个函数,第二种叫dump,那它俩到底有何区别呢?同学们,我们来写一写啊,来写一写,首先在这啊,我还把这个文件干掉啊,让大家保持知识点的完整性啊,知识点完整性在这儿呢,我第一步啊,先要干什么呢?要创建一个文件吧,对吧?诶创建一个文件咋创建来着?FP等于open。
06:27
Open写个名呗,叫test.tit都拿它来做啊,W的一个模式,然后紧接着呢,我们要定一个列表,因为我们是不是要将列表写入到这个文件中啊,但列表我现在知道他写不进去,是不是好name list等一个列表来写啥呢?张三来个啥呢?来个这个李四对吧?哎,那这是定义一个什么来写上啊,给按步骤来说,它叫定义一个列表,那接下来说呀,要干啥来着,要将列表是不是要做一个序列化呀,同学们。
07:08
对吧,那序列化这个方法呢,这个东西用啥呢?我们用这个杰森啊杰森,但是你这个杰森呢,它并非是Python默认给你提供的直接就能用的啊,如果你要想使用的话,你第一步给它导进来啊,导一下杰森就可以了啊,这是导入。导入接森模块到此到该文件中啊,如果不导是用不了的,如果不导是用不了的,假如说啊,我你家有一个啥呢?你家有一个车,我在没告诉你的时候,我就直接开走了,那能行吗?那能行吗?那是不是相当于偷啊,对吧,大家所以在这里边,人家本身在整个Python环境中是有杰森的,但是你要用的时候,你也得告诉他下,如果你要不告诉他这事儿不就错了吗?是不是各位哎,所以说你要导进来,导进来之后,接下来我们要做这步是啥呢?叫做啥呀?叫做序列化啊,叫做序列化,那么所谓的序列化刚才也说了,是不是将对象变成字符序列的这个操作呀。
08:17
对吧,那他咋用呢?就是杰森点dumps,你看里边是不是传的是啥呀,叫object呀,对吧,各位哎,传的是object来走传谁呀,不就nameist吗?传完之后这句话他能做的就是将啥将Python对象变成啥接森的一个字符串或者叫字符序列都可以啊,都可以逐串,我们说的简单一点,又变成阶层租串了,我们来看一眼吧,同学们假如说在这写一个啥呢?写一个names等于它我来打印一下啊,来打印一下。啊,打印一下这个names,然后大家还记得它的类型吗?来看一下走嗯,还是有同学老师,这不还是一个列表吗?对吧?不还是一个列表吗?我们来看一下它的类型吧,同学们啊,看它的类型变没变接身珠串呢?来看右键走你同学们你看它是不是变成了一个字串类型的数据呀,对吧?也就是说现在我们通过这个方法将Python对象变成了一个接森字符串,那OK,既然呢,你变成了一个字串,那你是不是就可以将字符串写入到这个文件中了?FP.right来写个啥是不是names写完之后千万不要忘了关闭啊,千万不要忘了关闭,那这个是将names。
09:54
啊,写入到哪啊,写入到文件中啊,将names写到文件中,那我们来运行一下,看这对象进没进来,来走哎,没报错啊来同学们我看一眼,看进没进来是不是可以了,各位,所以说呀,我们要经过这样一步操作之后,它才可以干啥呀,它才可以将这个对象存储到文件中啊同学们注意啊,这个的应用场景在哪儿呢?说将来啊。
10:27
我们在使用,在使用框架的时候。啊的时候,该框架会返回一个对象。我们要将对象写入到。文件中啊,就要使用啥呢,就要使用杰森点DOS啊,千万注意啊,最开始的时候啊是这样的。
11:00
大方法啊,千万注意啊,就是你这个对象本来你是写不进去的,那咋办呢?我给你变一下子是吧?诶给它变成一个字串是不是就OK了啊,同学们注意啊,这是doublemp方法来实现这个操作的啊,那先把这个来注释一下啊,一会儿你再来练习,那么现在呀,我再把它给关闭一下,再教大家一个比较简单的方式啊,但是这个方式呢,我写的还就我相比较下,我还是喜欢用大MP,但但至于说你爱用哪个用哪个,这无所谓啊,这无所谓你刚才不把它变成一个字符串之后再写入的吗?对吧?各位哎,而domp方法它有个作用啥作用呢?它是在将将啥呢?将对象转换为字符串的同时,哎,字符串转成字符串的同时咋的?
12:02
指定一个文件的对象,然后把转换后的字符串写入到这个文件里边,这是啥意思呢?同学们注意啊,也就是说刚才dump这个函数,它其实就把这两步给合并了,我们一下就行,那我们现在来试试啊,首先我还是一样的啊,要创建一个文件open。然后在里边写上test.t然后再来一个啥写啊写,那在这呢,紧接着我还要有一个啥呢,Name list等于张三,等于李四,好同学们,那这两完之后呢,咱们上一把之后,你是不是先将它转换成字串了,而这个不要了哈,不用是杰森点dump。啊,街上点大夫,但街上现在有吗?是不是没有啊,咱说了你家有车,但是我直接开走可以吗?是不可以啊,我得告诉你一声嘛,我说这个张三呢,我把你家车开走了,你借我一下是不是,但尽量啊同学们不要借车啊,你要导入一下,那你要用人家之前你得导入,你你得告诉人,那不是要不不成为偷了吗?对吧?好,那这里边呢,第一个要写的是啥呀,你要将谁咋的写进去,第二个你要告诉啥呢?你要写入到哪个文件,是不是写到FP里边啊,对吧?诶这个时候就完事了,诶不需要我们干啥呀,做这两步操作了,其实他和他就相当于大姆斯了,那我们来看一眼啊,同学们来走。
13:50
哎,并没有报任何的错误,我们来看一下是不是也写进来大家对吧?哎,所以说它的这个步骤啊,就相当于啥呢?相当于第一步就是他names把它两步综合了一下子,啊和谁呀,和他。
14:07
哎,OK,好,同学们,那现在这步就讲完了,啥讲完了我们叫序列化,所谓的序列化无非就是将Python的对象转成一个字串,然后哎,再给它写入到啥呢文件中啊,是这样一个操作。OK啊,同学们,那么紧接着同学可能会问了哈,那老师,我这里边不有这样一个东西吗?对吧?那我能不能再把它变成啥呀?我能不能再把它变成一个这个这个Python对象啊,对吧,能不能再把它变成一个Python对象,这也是我们想要做的,对吧?啊,所以说在这儿呢,我们接下来呀,要讲一个叫做反。序列化,那所谓的反序列化是啥意思呢?就是将一个接森的字符串正好是一个互逆的过程哈,将接森的字串啥反就是变成一个pthon对象,哎,变成一个pon对象,这就是我们现在想要的对吧?哎,现在我们想要的好兄弟们,哎,正好和上边相反,那你既然想这么做的话,同学们你是不是得先把这个这个里边的这个对象得拿出来呀,那昨天我们学过呀,是不是要读取过来,同学们对吧?好,FP等于现在啊,要打开这个文件叫test。
15:41
啊,点TXT要干啥呢?给它读出来,读出来之后我再给它变成啥呢?Python对象,那么现在呢,我们写个content等于FP点什么是不是read来读它,然后来content啊来这个,呃,打印一下啊content来同学们看读读取到啊,看读没读取到啊来右键运行它。
16:06
诶报错了,报啥错了,哎,他报报这个啥呀,这个文件错误吧,是test,注意啊,同学们这个名不要打错,如果名打错了,你要知道他说啥呢,说这个文件不存在啊,这也是我们最开始的时候,很多同学容易踩的一个坑啊,踩的一个坑,那现在呢,我们来运营一下,你发现,哎,读到了,但是读到的这个东西啊,它是一个什么类型啊,同学们看一眼是一个什么类型,是不是应该是一个字串类型啊,但是我们不要啊,我们知道它是一个什么,是不是个列表,所以说同学们接下来我要做的是啥呀,就要将接森字符串变成一个,哎,我们原来写进去那个排thon对象,那么在这呢,反序列化也有两种方法,第一个叫做lose子啊,第二种猜一下叫啥。
17:05
上边叫damp,然后dumps,你说这个load字,然后叫啥,是不是叫load对吧?各位,哎,这是两个方法来实现啥呢?来实现将我们的接森字符串变成什么呢?变成Python对象啊记住啊,这是一个可逆的过程,那这玩意儿咋做呢?既然你用它的话,我们用谁呀?啊,我们也是不是要导入一下杰森对吧?哎,我们来看一下,那这阶单咋写呀,是杰森点lose子,哎,Lose子,那么这里边应该写什么?写的叫content对吧?把它加载进来,加载之后呢。你要变呢,对吧?这个变啥呀?这是将写上一个小注释啊,将杰森字符串变成Python对象,有同学老师你这一下就变了,你这也太快了,对不对,那同学们来试试呗,在这里边写个啥result,那随便写的啊,一个result结果吗?我们来打印一下啊啊print啊result,那现在我们来运行一下看打印一下走还是它,但是它现在还是这个这个这个对象类型吗?我们来干啥呀?Print一下啊type来写上一个result,把上边做一个对比啊对比我读取之前啊,读取之后吧。
18:31
读取之后是字符串类型的。那么这个干啥呀?转换之后诶,你看我有没有什么变化啊,转换之后来看右键走,你我发现同学们你看它是不是变成什么类型了啊,是不是变成列表类型了,对吧,各位,所以说在这里边我们把它叫做啥呢?反序列化同学们听懂了吗?OK吧。
19:01
好,那我先把这个也注释,再注释一下啊,你看啊,这是变化之前经过这一步的变化呢,诶我又变了,哎,所以说这这几个大家一定要注意啊,以后能用上好OK,把它注释一下,那么紧接着还有啥呢,叫做load啊漏呢,其实合计之前也是一样的哈,也就是说他咋的,他把两步操作都变成一步了,我不读了,上网是不是读完之后再变的呀,这边我不读了,我干啥呀,我直接弄来看一下子啊,看一下子漏说FP等于找到这个文件TST,然后干啥呀?要给它干什么,要给它读出来吧,读出来,读出来之后记住同学们不着急啊,我直接用,你读完之后这个数据我是不是没拿呢?我直接可以用啥用杰森点load。啊接省点漏的不加S啊,千万注意不加S,不加S的情况下,我直接读个谁呀,读个文件完事了,哎,读一个FP啊读FP,那么读完这个FP之后,我现在看一眼啊result,哎,我就没有说干啥呢,这这读的是什么,读的是数据对吧?而在这里边我们读的是啥呀,是不是文件呢?那我在这干啥呀,我来打印一下来print啊print然后是什么呢?是这个这个这个result啊result看一下这里面有没有,我再打印一下它的一个类型print type,然后来个result来看一下啊可不可以走。
20:42
我们发现诶同学们是不是也变成列表了呀,所以说大家注意啊,最后也千万不要忘记关闭啊close啊close千万注意啊,这里边一个加载的是文件,一个加载的是什么数据吧,哎,这是啥呢?就是杰森的序列化和反序列化,注意啊同学们这里边我们哪一块用的多呢?就是我们杰森的序列化这块啊,序列化这块,而序列化的时候,我们常常啊用的时候它比较多一些,大S啊OK同学们啊,大家课下的时候把它多练练,然后等我们到讲到爬虫的时候,那么大家在这儿会写过很多很多代码,OK同学们,我把视频暂停一下。
我来说两句