00:00
好,说完了打开文件,那按照我们刚才说的,完事以后,我们是不是该对文件进行各种操作呀,哎,读写呀,删除啊等等这一系列的,但是呢,这些操作相对来说要麻烦一点啊,所以我们先不说它,我们先说一个必须要做的一个事儿,叫做什么呢?叫做一个关闭文件啊,叫一个关闭文件,那这里我们来创建一个来一个零五,还是放到我们这个code里,我们叫一个什么呢?叫做一个关闭文件,点PY,那这个时候呢,当然我要想关闭,我是不是还得先要去打开这个文件,哎,打开文件我们先来一个这个file name,等于一个这个DEMO,点一个tit,那我们还是啊,为了方便演示,我们直接在这个里边创建一个这个demo.tit里边呢,还是这一套啊,回车保存一下,然后呢,在这儿我们整完了,我们来调用什么呢?哎,调用我们这个open。
01:00
在干嘛呢?哎,来打开文件啊,打开文件那注意了,它返回的是一个对象啊,这个对象代表就是我们这个文件的对象,直接是一个file OB接,等于我们来一个这个open啊op in open我们这儿来一个file name啊,Open我们来一个file name,那在这儿啊,打开了以后,现在这个file OB接就已经有了,诶但是呢,你说我要直接上来就关吧,它也不太好,对吧?所以在这儿呢,我们来干嘛呢?我们来读取一下我们文件中的内容啊,读取我们文件中的一个内容,那注意了,当哎我们获取了这个文件对象以后啊,那这个fair OB接就是我们文件对象啊,当我们获取了文件对象以后,所有的哎,所有的对我们这个文件的操作,诶都应该什么呢?诶,都应该通过我们这个对象来进行,那注意了,现在这个文件已经。
02:00
获取到了,你无论你是想读问件,想写文件,还是想如何如何,所有的操作都是通过这个文件来进行的,那怎么通过这个文件来进行啊,哎,那就是了,要干嘛呀?诶要去读取我们这个要是去调用我们这个对象的一个什么呀,方法,所以你要想读取我们这个内容,哎,比如那你应该调的就是什么呢?哎,我们这个fair obj里边的一个什么呀,叫做一个read啊,就一个read读取的意思啊,那这个read这个方法,诶RA的方法干嘛呢?诶用来读取我们这个文件中的这个什么呀,诶内容啊,用来读取文件中的内容,它会什么呢?诶它会将我们这个内容,诶全部诶返回啊全部诶作为一个什么呀,诶全部保存为一个这个字符串返回,所以在这儿我们只需要去接收一下就行了啊,我们这直接来一个content啊,Content等于它,然后在这儿我们直接打印一下,Print一下,我们这个直接一保。
03:00
存一执行,那现在来看这个内容是就被我读取到了,哎,也就是说现在我就已经通过程序来读取到了我们文件的内容,那至于这个read的具体用法,我们先不管它,现在你在这儿看到了,我通过这个read就可以读到我们这个文本当中的这个内容,那注意了,你写的时候也是暂时先写英文啊,中文我们稍后再说,暂时先写英文啊,暂时先写英文,好,那现在读取文件了,就是说我们文件的操作是不是就完成了,哎,操作完成以后,紧接着我们要做的事儿就是什么呢?就是我们叫做关闭文件啊关闭文件那注意了,我们来说一下,就我们现在这个程序来讲啊,就我们现在写的这个程序来讲,这个文件其实我关不关都行,什么意思啊,现在我们程序一共代码一行两行,三行四行代码对吧?执行第一行,执行第二行,执行第三行,执行第四行,第四行执行完了以后,后边还有没有代码了,哎,没有代码了,后边没有代码了。
04:00
就意味着我们Python截止到这儿就结束了,后边就不会执行了,那这个时候它结束了,它会释放掉我们程序里的所有资源啊,所有资源无论你这个文件打开与否,它都会干嘛呀,自动关闭啊,它会自动关闭,所以如果是仅仅就我们这来说,这个东西压根儿就不用关啊,一就不用关,但是我们真正开发的时候,尤其是我们写一些这种软件啊,或者要写一些这个we部应用,We部应用简单写介绍一下,就是写一个网站啊,比如说你这写的是一个网站,一个网站你要可能读取一个文件,这个文件你要提供给用户,可能下载或者干什么什么用,那这个时候你打开文件以后提供给用户了,用户给去下载了,那这个时候你用不用关,哎,注意这个时候必须得关,为什么?因为现在我们的程序执行完了就关闭了,而我们真正写的程序是要放到服务器里的,写外边服务器是要放到服务器里的,那这个时候这个程序注意了,服务器会不会停啊?哎,服务器不像我们这个程序运行下就停止了,它会。
05:00
一直去运行,你想想百度,你是不是随时能访问,随时访问,随时能访问啊,为什么?因为它的服务器的程序一直不会停止,而我们如果要写一个服务器的话,同样它也不会停止,那这个时候带来一个问题,服务器的程序是不会停止的,而你现在打开一个文件,也就是说这个文件它会不会自动释放,诶不会自动释放,因为程序一直在运行,它不会因为程序终止才释放,那只有你服务器重启的时候,它可能会释放,但是服务器重启准备哪天的对吧,准备哪天的没谱的事儿,那所以这一块我们必须要干嘛手动关闭文件,因为如果你不关闭文件就相当于什么,哎,相当于我在系统里改文件,改这是不是改一个,哎,改完了关了,再来一个,哎,是不是又来一个,再来一个咔,再来一个咔。诶也就是说我现在是不是同时打开这文件打开了四次呀,诶打开四次,那你想想我打开这四次它占不占内存,诶肯定占,即使你文件很小,你反复这么大,反复这么大,你打开了1万个,大概以打开了一个1亿个,那内存里边是不是同时有这么四个文件在在操作呀,哎操操作,那这个时候是不是很容易影响到我们的性能啊,也就说会导致你的程序越运行越慢,越运行越慢,所以注意文件操作以后必须要干嘛?诶必须要将文件关闭啊,必须要将文件关闭,那问题来了,怎么关闭?哎非常简单,直接调用我们这个close close方法,诶来干嘛呢?诶来关闭我们这个文件,直接调一下,直接调一个我们这个fair OB接点一个这个close,这一保存,我们这一执行走一个效果跟刚才是一模一样的,但是区别就是这儿我关文件了,而之前我们没有关文件啊。
06:50
就这么一个区别,那我们来看看,那我怎么能看出个区别,那这个时候注意,当我关闭文件以后,我这再一执行走一个,诶,那这个时候再看是不是报错了,哎,就报错了,告诉你IO operation on close file,你的IO的操作在一个什么呀,已经关闭的文件上,就说你不能在以对已经关闭的文件进行这种读写的操作啊,进行读写操作,所以注意这个close这个步骤是什么呀?诶是必须的啊,是必须要进行的啊,必须要进行的,好,这是一种方式,呃,但是其实这种方式并不是我们常用的一种方式,为什么呢?因为这种方式虽然是可行的,但是其实它会有一点点的这个麻烦。
07:35
因为我要调一个close,有可能这close我就我就忘了,我就忘了,或者有一天干嘛呢,我想继续操作这个文件,我顺着往后就写了,我忘了,我这写了close了,这东西很可能被忽略,或者是呢,我写它以后,往后还会写代码,对吧?所以我要写的时候,我就要注意了,我这个所有操作代码是不是必须要写到close的前边啊,诶写到close前边,那这个时候就比较麻烦叭,较麻烦,每次还得想着写,改的时候还得想着把代码都写到前边,所以呢,稍微有一点点麻烦,但是其实呢,也不是特别麻烦,但是Python就是为了给我们解决这问题,所以他给我们提供一种方式,什么方式呢?诶我们叫做一个位子S。
08:16
妹子爱一句。这个语句就是专门为我们的什么呀,哎,为我们这个呃,这个文件来设计的,我们来看怎么写啊,怎么写在这儿我直接写一个with with呢,这我来调一下,我们叫做一个open open这时候里边我们直接传一个file name啊,File name file name,然后这我们直接来什么呢?SS什么呢?在这我们叫做一个fair欧比啊fair欧比杰冒号,我先写一个pass,先看这,那在这里现在我们来看我这个写法,Open file name s file OB接跟它实际上是一样的,其实就是相当于把open的返回值赋值给了我们这个file OB啊,把open的返回值赋值给fair OB,那现在在什么呢?现在在我们的位,你注意了,位后边是一冒号啊,诶,这是一个什么呀,这是一个,哎,这是一个代码块啊,这一代码块谁在这写在我们这个位字语句中,哎,可以直接使用我们这个,哎,Five。
09:23
还有这个什么呀,哎,Obj来什么呢?哎,来做我们这个什么呀,来做我们这个文件操作,那这个时候注意了,你在这儿直接print一下我们这个file obj点一个red obj点一个这个。直接保存一直行,咱们来看读取的效果是不是一模一样啊,哎,读取的效果是一模一样的,但是它有什么特点来看着啊,我们在with外边,我再使用一个,它已保存走一个,看看是不是报错了,哎,I operation on close的file啊那这个时候注意,那此时这个文件只能在我们什么呢?哎,With中使用,一旦我们这个位结束,诶with结束则什么呢?诶则我们这个文件会自动什么呀?诶close啊,自动close啊,这就是它的一个特点,在位置里边,就是说现在我这个文件你可以在位置里边,你随便用,你怎么读都行,一旦位置结束了啊,那对不起,它会自动干嘛,哎自动关闭,那这样它其实是简化一点,我们就不用再去手动去调这个close,它会替我们干嘛?哎,自动去关。
10:40
闭这个文件就不用我们再去手动去考虑close这个事儿啊,就这么一个特点啊with,所以以后呢,方式选择这两种都行,诶你说写到位里也可以,你直接调用这个close呢也可以啊,两种方式都行,那再来看我们来进一步完善我们这个代码,那还有哪可以完善的呢?我把这块啊,我先注了,然后在这写上,我们简化一点,之前我们代码是这样的,对吧,那这个时候啊,看着我来一个来一个这个file name等于一个hello,那这个时候很明显这个名字是不存在的,对吧?名字是不存在的,我这一执行走一个麻了,是不是报错了,哎,叫做一个no such file or director hello,哎,没有这个文件啊,没有这个文件,那这个时候我们这时候他是不是就不当文件不存在的时候,他是不是就给我们发出了一个file not found这么一个异常,这么一个错误呀,哎,这一个错误,那现在我想对这个错误进行处理怎么办?哎,你不处理他就向上抛了,对吧,向上抛了但是现在我想。
11:40
库里怎么办?哎,那这个是其实也可以干嘛呀,我直接来一个什么呀,哎,TRYTRY什么呀,Except啊try except,我直接把这个位子放到什么呀,放到TRY里,它是不是就会自动去捕获它里面的错误,哎捕它里边错误,然后在这儿我们要捕获错误叫做一个什么呢?诶叫做一个file not found error,那如果捕获到这个错误就打印一句话,哎打印一句话叫什么呢?直接来一个什么呀?哎,我们来一个这个格式化字符串吧,哎,直接我来一个叫做一个file name啊file name这个什么呀,文件不存在,也就是说当你文件不存在的时候,我给你打印这么一个提示信息啊提示信息我这一执行是不是hello这个文件不存在呀,哎,Hello的文件不存在,而如果存在,我这还是来一个这个demo.tit这一执行这个时是就不会报错了,哎,不会报错了,那在这里我们是不是就可以对我们这个try except来进行一个应用了,哎,当是现在我们只捕获了fair not fund error,如果还想捕获其他的你继己去捕获。如果你不。
12:40
这不或想上抛你就不写try except是不是就OK了,诶就OK了啊,那这个也是我们对我们异常的一个应用,那这个格式基本上就是我们对文件操作的一个什么呀,标准格式,首先我们先确定文件名,然后我们通过位置来打开文件,那注意这个位置要放在一个try except里,要捕获它的什么呀,异常,但是看你情况,需要补货就补货,不需要就不补货,然后我们的所有操作都在位置里进行,位置结束以后它会自动关闭,我们就不用再去手动去关闭这个文件了啊,关闭文件了,那这是一个基本的一个格式啊,我们来听一下。
我来说两句