00:00
那下面呢,我们再为大家介绍第二种读取文件的应用方式,那大家看到我们第,我们前一种方式呢,它是带缓冲的,对吧,它是带缓冲的,它是一次性啊,它是一次一一次一次的读入,那么在勾浪里面呢,它还有一种方式,它读取文件的内容并显示在终端。在这个IOUL包里面呢,有一个方法叫read file,它可以一次性将整个文件读入到内存中,也就是说一次搞定。那这种方式呢,它比较简单,比较比较直接。那这种方式呢,有一个前提啊,就是它不太适合于,它比较适用于文件不太大的情况。那也就是说,如果我们这个文件比较大,那你用这个方式呢,就不太好了,如果文件比较大,还是用前面这个带缓冲的方式,如果你这个文件比较小,对吧,而且呢,呃,文件本身它它比较小的情况下,咱们就直接用IO u tr包里面的file一次性一次性就可以把它读进来了,而且呢,文件也不用打开,因为他把这个文件的打开和关闭整个操作。
01:13
都封装到这个read file这个这个函数里面去了,所以说看起来比较简洁,明白我的意思吧,好,那现在呢,我们把这个第二种方式呢,也给大家伙演示一下。来看一下这个情况。好,我给大家走一下代码。代码演示。代码演示一下,好,这次呢,我们用的是I o u tr包里面的一个一个函数叫read file,一次性的将整个文件。读入到内存里面来,好吧,但是前提啊,同学们,这种方式适合文件不太大的情况。再说一遍啊,如果文件很大,那么我们还是用上面这种方式,带缓冲的方式呢,效率会比较高一点。
02:00
好,那现在呢,我们打开Vs code,我们新建一个文件。甲,对不对,来。DEMO。零三。那现在呢,我们新建一个文件。命点go。好,前面的代码还是一样的。前面。这一部分还是一样。对吧,当然里面有些包可能就用不到了,比如像这个包咱们就用不到。好,那这个OS包呢,应该也用不到了,但是有一个包用到了叫UT。有。在IO。TU。Til啊,这个包这个包好我们来走一下,嗯,这个呢,我们是这次啊使用。是用这个IOU里面的一个方法叫read。Red file,一次性的一次性。
03:03
一次性将文件读入、读取到读取到位。那现在呢,首先我们得有一个文件对不对,那文件呢,直接把这个文件的地址写清楚,就是它的路径写清楚,TXT。大家看现在呢,我已经把文件指到了D盘下面的test txt文件没问题吧,那现在呢,我们用一个方法就可以搞定了,用哪个吗是IO。这个包下面有一个。函数叫read file,那直接把file放进去就可以了,大家看这个函数会返回两个值,我们看一下这个文件夹,它会返回两个,呃,我们看一下它是返回什么东西啊,一个是它读取到内容,大家看这里。我一步一步的给他查一下,在IO。这个包。是不是IO下面的IoT这个包里面有一个方法叫read file哪里呢,就它。
04:05
大家看它传入的行参是这个文件的名字,实际上就是文件的全路径,它返回的是一个BAT数BAT切片。看到没有,那也就是说它是按这个字节的形式给你返回的,同时呢有个error,那也就是说如果有错误,这个error就不会为例了,这会儿还有案例。看到没有,就是你这块把文件名字写清楚,然后呢有个content,有个error,这个content就是一个bit数组啊BY切片。看到没有,那如果说这个不等于near的话呢,他就直接用个log,打了一个log日志就退出去了,如果说呃没有退出,那说明正常正常读取,他就用这个print的方式把这个文件的内容输出来了,大家看清楚没有。好,那现在呢,我们来把它演示一下,好,首先呢,我就用一个content接收一下。好A。
05:01
没问题吧?好,我做一个判断,如果A不等于near,说明出错了。对吧,出错了,我把这个错误信息打出来一下。叫做read file。这个A是什么呢?我们把它输出来。L输出来就行了。好,这样这样,这就是完事,完事,那么如果没有出错怎么办呢?我们把这个。把这个读取到的内容,读取到的内容。显示到显示到终端。显示到终端,好,那这个怎么显示呢?非常简单,输出来就行。对不对。Print f。好,我直接。100V内容呢,就是content,但是大家想一想啊,这样输出你们输出的类似输出的是什么内容,大家想一想。它实际上输出的是一个切片,是一个bad。
06:02
是一个bit。BAT这样的一个切片,所以说你会看到一堆数字,因为BAT呢,按输出的时候,它是按这个数字给你打印的,对吧,我们先来看看效果怎么办啊,效果怎么样,还有一点大家有没有发现。如果同学们认真观察的话,你们发现我没有打开这个文件,就直接读取了。那因为你没有打开,所以说呢,你也不用关闭。所以说没有那个close那个方式,因为它文件的读取和关闭,打开和关闭都被隐藏到read file这个函数里面去了,所以说我们这再多说一句话。再多说一句话。因为因为这个read file,因为我们。因为我们没有显示的close open。Open这个文件因此也不需要。也不需要什么呢,显示的。
07:04
显示的。这个写错了啊,显示是这个显示。就说没有明确的啊,没有明确的显示的open,因此也不需要显示的close这个文件。为什么这么说呢?因为因为这个。因为整个这个文件的,因为文件的open。和和这个close。被。Close被怎么样啊,被封装到。封装到这个read file函数内部了。因此呢,我们不需要去管理,所以说这个地方显得就比较简洁,对吧,就就几句话,你看前面咱们这个地方写了,还写了不少代码呢,你看。还differ了下,然后循环的去读取对不对,但是你看这个地方很暴力,直接性的把这个文件。一个函数就把内容读出来了,然后输出就完了,这个显得很简洁,但是有一个前提啊,同学们我再多说一遍,这种方式呢,因为它是一次性把整个文件内容读进来。
08:12
那我告诉大家,这种文件如果过大,那效率就会很低,因此呢,这种方式只适合文件不太大的情况来使用,再说一遍啊,好的,所以说我们这也没有打开,也没有关闭,不需要关闭,不需要显示的关闭啊好,我们来输出一下这个代码,看看目前是个什么情况,CD点点。CD点点CD到FIRE03。第二,里面有个命点go,那就go wrong,命顶go,跑起来走。好,我们可以看到。他输出这个内容,但是你看到这里面全是什么呀。全是空格。啊,全是数字,看到没有。因为你是一个输切片嘛,所以说它输出的时候呢,就按照这一个,按照这个数字来给你输出的,那你要输出这个具体的内容的话,应该这样输出,听我说啊。
09:09
你要说出具体内容。那这个就得这么干。你要把它把这个。转折时寸这个就可以了。能理解吧,转成一个四寸就行了,来,我们再跑一下看效果。好,我们可以看到此时此刻这个内容就出来了,包括汉字也没有写错,对吧,北京,Hello yes hello word没问题。所以说你要显示正确的内容呢,你需要把这个BAT切片。转换成实寸类型才能够正确的显示出来。好了,那同学们,这个就是我们第二种读取文件的方式,用read file这个方式一次性读取到位,我把这个给大家反述一下。好,给大家板述一下,走一个。
10:01
好的。把它放到我们的这个笔记里边去,没有毛病吧?好,同学们,那么第二一种读取文件的方式呢?我们就给大家介绍到这里。
我来说两句