00:00
好,接下来我们来学习Python里边一个也是比较常用的一个东西,那也是我们本一章的第二个内容,叫做一个文件啊,文件你们直接写上,呃,文件的英文呢,我们叫做一个file啊,File我们叫做一个文件,那文件其实很好理解什么是文件。诶,其实我们说了,在我们的计算机里一切接文件,比如说我现在这写了一个01点异常点PY,那这个是不是就是一个文件,诶我们知道这是一个文本文件啊,文本文件,而我们先看我桌面上这些图标,这些快捷方式,他们是不是也是一个文件呀?哎,也是一个文件,我们随便找一个软件啊,我们直接打开它啊,打开它这个文件所在位置,你会发现这里边是不是有各种各样的这个文件呀,诶这些实际上都属于文件,包括你,诶各种各样的是吧,你看的电影哎,你看的图片哎,你听的这个音乐,所有的在我们计算机里存的东西,实际上它都是什么?诶,都是文件啊,都是文件,所以这里我们所谓的文件就指什么呢?诶,文件我们可以各种操作,比如说我在桌面里边,我直接创建一个文件,我直接来什么呢?来一个文本文档,我叫一个hello.tit那这个时候我是不是就可以通过我的subleme对这个文件进行编辑啊,诶我可以去。
01:21
底些内容往这个文件里去保存一些东西,诶保存完了直接写保存这个文件是不是就就存上了,诶我也可以干嘛,诶我也可以把这文件给它删了,我不要了关掉,我把这文件给它删了,我们是不是可以通过手动的对这个文件进行各种操作呀,哎各种操作同样在我们的计算机中,在我们的Python中,我们也可以什么也可以通过程序来对这个文件进行什么呀,诶进行操作,所以这里边我们要说的文件就是什么呢?诶我们通过我们的什么呢?通过我们这个Python,诶Python程序来对我们这个计算机中的什么呢?诶中的这个各种文件进行什么呀?诶进行这种诶增删改查的一个操作,增删改查的一个操作啊,我可以去读一个文件,我可以去打开一个文件,我可以读文件,我可以向文件里去写东西,我可以去干嘛呢?删一个文件,我可以对这个文件进行重命名,总之说到这儿就是来说一下,就是对我们这个代码的,对我们。
02:21
Pon中代码的各种什么呀,各种操作啊,各种操作,那现在我们先说一下啊,还有其实对于文件来说,它还有一个名叫什么呢?叫做一个IO啊I斜杠O,这个I叫什么呢?I我们叫做一个音put o呢,我们叫做一个什么呀?哎,Out put,那这个IOO。Out put啊,就是一个output,这个叫做我们一个IOIO什么意思?I叫做input,叫做输入,诶O叫什么意思?Output叫输出,Input做输入,那注意这个input output都是对我们人来讲呢,Input像人input output从人这output,也就是说,诶input我们叫一个输入,输入指的什么?我们我们来通过我们的程序来从我们的计算机的文件中来读取信息,向我们人这来输入啊,叫做读取,其实所以input其实在这儿的意思就是读取,Outut是输出啊,从我们这儿把一些东西给它输出到文件里,诶叫输出在这儿outut实际上就是什么呀?就是写的意思,所以在有的语言中,我们这种操作叫file,哎在有的语言中叫什么呢?叫IO,你看到这儿你知道它是什么呀,是同一个意思就OK了啊,同一个意思就OK了,那好,那我们现在来说,我们现在想一下,我们对一个文件操作,它需要经历哪些步骤,我们先不想程序的,我们就想什么呢?我们人去操作一个文件,我们说了程序的使用,实际上是对我们平时操作一个抽象,诶对我们平常性的一个抽象。
03:47
所以我们先分析一下,如果不用程序,我们如何去操作一个文件,再想我们如何用程序去操作它,那这里我们先来新建一个文件,比如说我们这儿还是桌面有一个hello.t那现在我要想操作这个文件,我的第一件事儿是干,第一件是干嘛?哎,第一件事儿很显然我是不是要先双击去打开这个文件呀,哎,打开这个文件,所以这个人注意了,我们来写一下,我们来说一下我们操作文件的步骤,诶操作文件的一个步骤,什么步骤,第一步我们要干嘛?诶我们要先打开文件啊,打开文件你得先把文件打开了才能去操作啊,才能操作,然后第二步呢,打开了,打开了干嘛?
04:35
哎,我是不是要去,诶,如果我是想读这个文件里边内容,那我就读,如果我想写,我是不是写一些那新内容啊,诶新内容,所以打开文件以后,第二步就是干嘛,诶就是对我们这个文件进行什么呢?进行各种操作啊,什么操作呀,啊什么操作呀,什么读。哎,还有什么呀,还有这个写,还有什么等等吧,其实总的来说就是读写对吧,进行各种操作,然后什么呀,改完了再干嘛,哎改完了得保存啊,你这去往里边添加内容了,你得CTRLS是不是存起来呀,哎把它存起来,所以第二步对我文件进行各种操作,然后保存,那现在我对这个文件的操作是不是就完成了呀?哎完成了,接下来还要干嘛?诶同学说老师你这完成不就完成了吗?大家注意了,完成以后我们改完了,我们一般还要做一件事儿,什么事啊,哎,你是要把文件给它关了呀,哎给它关了,所以这里边我们要做的一个第三件事儿就是什么呢?就是我们叫做一个关闭文件啊关闭文件,所以注意在我们这儿,我们真正手工去操作一个文件的步骤分成这么三步,第一步打开文件,第二步对文件进行各种操作是吧?第三步我们要干嘛呀?要关闭文件,这三步是必备的,同样在我们的程序里,我们通过pth进去操作文件的时候,也需要经历这三个步骤啊,也需要经历。
05:55
这三个步骤,那我们一个步骤一个步骤来,步骤来说,我们先来说什么呢?我们先来说打开文件啊打开文件在这里,我们先来新建一个文件,直接保存一下,这是我们这个零四叫做一个什么呢?诶叫做一个打开文件,我们先来说打开文件,那打开文件在这里我们先来,诶说一下,那如何打开文件,那既然要打开文件,我是不是得先有一个文件呀?诶有一个文件,那在这里我先来干嘛呢?我先来创建一个文件,随便写一个,我就叫一个demo.t诶一个示例的一个文件,这里边呢,我随便写点内容啊,在我们这个编辑器里,我们直接输入一个lo,然后按下table键回车,它会给我们自动生成一个这个英文的文本,这个英文文本呢,是一个比较经典的,其实没有任何意义啊,没有任何意义,它就是一个测试我们这个排版的一个文本,所以你就写上它,让它占一个地儿,待会我们可以给它做演示啊好,那现在文本有了,那接下来我们来看,那现在比如说我现在就想在这儿来打。
06:55
拍这个demo.tit那这里边我们要怎么做,那实际上注意打开文件我们要调的是一个函数,这个函数是我们的Python的内建函数,函数叫什么?我们直接来看找到文档library reference啊,Library reference library reference里边我们来看这个build in function,我们直接找到这个函数,函数你要打开,打开什么,怎么就打开,打开英语怎么说叫什么呀,叫open,所以同样我们这个函数就是谁就是open,所以我们要调的就是这个函数,这个函数我直接给它粘过来啊,直接给粘过来往那往这一放啊,那这个就是什么呢?打开文件的一个函数,我们这块来说一下。
07:40
我们这一块干嘛呢。我们使用我们这个open函数来打开一个什么呀?哎,打开一个文件啊,使用open函数来打开一个文件,那猛地一看很多同学就要疯了是吧?这破函数怎么这么长啊,你看有几个参数,诶,一个两个三个四个五个,嗖嗖嗖,是不是有一系列的参数啊,哎,一系列参数,但是千万不要着急,你会发现这里边除了一个位置参数里边以外,后边的是不是全都是命名参数,并且每一个命名参数,每一个关键字参数,它实际上是不是都是指定的默认值啊,哎,都有指定的默认值,所以其实说白了,这里边只有一个是必须的,就是谁就是我们这个啊,就是我们这个file,那这里边,所以后边的参数我们先不管,我们只传一个什么呢?只传一个file啊,只传一个file,那在这我们来说一下,那这里面我们来说先说这参数啊,我们先列一个叫做一个file file是什么呢?File是不是就是文件的意思呀,所以。
08:44
这个file就是我们这个要打开的文件的一个名字啊,文件的名字,你的文件名是什么?但是我们这边写完整了,其实他说的是一个路径,路径这个东西我们先不管,我们直接写名字,那这样啊,我先来干嘛呢?我先来创建一个变量,创建一个变量来保存我们这个文件的一个名字啊,文件的名字直接来一个这个file name等于什么呀?我们这个文件名是不是叫DEMO点一个T啊,诶所以在这我直接要file name等于demo.tit那现在我要做的事儿是不是就先打开这个文件,哎非常简单,直接调我们的什么呀?诶调我们的open里边,把我们file name作为第一个参数传进去,那这个就是什么呀?诶这就是打开什么呢?诶打开我们这个file name,诶,对应的什么呢?对应的这个文件啊,对应的文件,那这里边我们现在一调open是不是就打开了,哎,那问题就来了,那我怎么知道。
09:44
这个文件打开了,哎,那我告诉你,只要不报错就证明确实打开了啊,只要不报错就证确实打开了,咱们这样我先改一个DEMO 123.1个tit,现在是没有这个文件的,对吧?没有这个文件的我们直接一执行走一个,这个时候我们会发现我们执行的时候报错了,但是这个错误实际上跟我们的file没有什么关系,跟我们这个文件没有关系,因为他报的是一个语法错误,告诉你Co problem now,告诉你这个什么呀,是编码的,问为什么会报这个问题,因为我们刚开始在粘这个open的时候,在open里边是不是有了一个encoding,等于now,哎,等于now,那这个时候实际上它影响了们整整个程序,因为在我们Python里第一行注释里边的encoding,它会被解析为你要设置为我们这个文件的编码,所以你这写了一个nu,表示说你把编码设成none了,所以这个时候就不干了,他给你报了一个什么呀,报了一个错,那为了避免让它产生影响,我们这干嘛呀,诶加一个下划线来干嘛呀,哎,来改一下就OK了,那关羽coding的具体信息往后再说,现在他不是我们。
10:44
关注点先不管它,那好,那这回改完了就不会再报这个语法错误了,我们这儿再执行一下,走一个,那现在是不是报了这么一个错误,哎,这个就是我们文件的错误,A file not found error,文件没有发现这么一个错误,然后给你信息了,叫做no such file or directory demo123点T,没有这个文件或者是目录,哪个目录就是demo123.tit这个东西啊,没有这个东西,好,那接下来我们来说为什么会报这个错啊,诶很明显,因为刚才我们把这个名给改了,它本来应该叫demo.tit我们是不是改成demo123.tit了,所以我要说的是什么,如果文件没有打开,打开失败了,在这儿是不是会给你报了一个错啊,诶,报一个错,那好在这儿我把这个名啊改对了,那现在这个名称是不是跟这个名是一样的了,哎,跟这个名是一样的了,那这个时候文件能不能正常打开,诶很明显它是可以正常打开的,那这个时候我们再看走一个还报不报错了,诶就不报错了,那这个时候文件。
11:44
就已经打开成功了啊,就已经打开成功了,所以注意了以后我们要打开文件,就是用谁用我们的这个open这个函数啊open这个函数,那这个时候又有一个新问题了,文件我的确是打开了,打开以后,那我要怎么去操作这个文件呢?诶怎么去操作文件呢?那注意了,我们要说一下open这个函数它是有返回值的,它是有返回值的,返回值它返回的是什么呢?它会返回一个对象啊,一个对象,这个对象代表谁呢?诶这个对象就代表了,诶代表了我们当前打开的一个什么呀文件,所以注意它会返回一个对象,而这个对象代表的是谁,代表的就是你打开那个文件,你打开哪个文件,这个对象就代表谁啊,打开哪个文件对象代表谁,我们还是这个对象,我们先不细研究,我们来先看看有没有这个对象,比如说这个对象我就叫做一个file obj啊,Fair。
12:44
Object,我们先来看看什么呀,我们先来看看有没有直接print一下我们这个object。File object直接保存,我们一打印走一个这个对象是不是确实存在啊,哎,对象确实存在,信息我们就不具体读了,你知道对象存在就OK了啊,信息我们就不读了,总之看到这个东西就证明我们的对象已经干嘛了,已经打开了啊已经打开了,好,那接下来我们往下来说,那现在我们来看现在我们这个文件和我们当前这个文件,它是不是在同一个目录下呀,诶同一个目录下,所以我直接写名就可以找到了啊,直接写名可以找到了,所以这里边我们说说了,如果什么呢?我们的文件和什么呢?诶和诶我们这个目标文件啊,就是你要打开那个文件和什么呢?和我们当前文件在什么呢?诶在同一级目录下啊,同一级目录下则什么呢?则直接写使用什么呀?诶,则直接使用文件名即可。
13:51
哎,文件名记个你在同一个目录下,你就用文件名就行了,那假如说我当前文件和我的这个目标文件不在同一目录下了,比如说现在我这有一个demo.t来啊关掉,我在这儿直接右建,我们新建一个文件夹,文件夹叫什么呢?叫hello。
14:12
叫哈,那现在我创建了一个hello,这个hello呢,还不能拖,这样吧,我来。打开。打开所在文件夹啊,我们来看一下,刚才我建了一个hello啊,我把hello挪到扣里啊,把hello挪到扣里,然后我干嘛呢?把这个demo.tit挪到hello里,那现在注意了,经过我这么一改以后,demo.titdemo.tit现在是在什么?在hello这个文件夹下,它还有没有在同一节目录下了,没有了,这个时候我再一执行,它还能不能打开了,我们来看效果啊,这一保存一执行干嘛了?是不是又报错了?诶告诉你,No such file or director tit还是没有找到这文件,为什么?因为这个文件是不是已经搬家了,诶,这个文件已经搬家了,那这个时候怎么办啊,这个时怎么办?那注意了,这个时候你就必须要写这个完整的路径啊,完整的路径是什么?我们直接来一个这个file name改一个等于什么呢?因为他现在是在哈下,所以你得写一什么呀,诶哈下的什么呢?哈下了一个demo.tit啊哈下的一个demo.tit这一保。
15:24
存,我们这一直行走一个这个数是不是才能找到,哎,才能找到啊,所以注意这个路径一定要写明白,如果是同一级目录下直接写名就行了,如果是什么,如果是在目录的目录里,你还要把这个路路径给它干嘛呀?哎,给它加上啊,给它加上,那这个时候你要注意啊,你要注意注意什么?在我们的Windows里,我在表示一个路径的时候,分割一个路径的时候,我应该用的是反斜盖啊,在Windows里我应该用反斜盖,但是很明显在这里我如果使用反斜盖的话,这块会有问题,为什么?因为反斜盖是不是我们的转移字符啊,哎,所以你这儿使用反斜盖的话,它会把这个杠D当成一个整体,你这一执行它还会报错,还是告,那这个时候他能找到了,哎,他能找到,因为杠地它不是这么一个,它会在这儿会自动进行转移,他还能找到的,但是我们为了避免这个错误,诶咱们来看这儿,它是不是直接在这给你加了一个鞋杠,诶给你加了一个鞋杠自动转移了,我看看还要改一个,呃,比如说改成这个杠T,它能不。
16:24
这一执行。呃,刚T的话,它实际上也会转移啊,它实际上也会自动转移,但是由于这个没有这个T就就找不到了,对吧,它会自动转移,但是这个时候其实我们为了避免这个问题,它如果不自动转移怎么办?或者说在我们老版本的Python里,它不会自动转移的时候,那是不是这个路径就出问题了呀?哎,所以注意我们在Windows里使用路径的时候。在Windows。系统下,哎使用我们这个路径时,我们可以什么呢?哎,我们可以使用我们这个鞋盖,哎来干嘛呢?来代替我们这个什么呀,反斜杠,为什么?因为鞋盖是表示转移字符,所以在这儿你可以干嘛呢?你可以把这个鞋盖改成什么呀,反斜盖,这样它不会有任何问题啊,不会有任何问题,当是刚才看也没有什么问题对吧?因它会自动改,但是在这儿我们为了避免它改不过来的时候,我们用一个什么呀斜盖来代替反斜盖或者什么呢?或者可以使用什么呀?诶使用我们这个两个反斜盖来干嘛呢?哎,来代替。
17:28
反斜什么意思啊,你反斜盖是转移字符,我两个斜盖,斜盖是不是自己转移自己啊,哎,这样也OK啊,这样OK我们自己写上,这样就更保险一些啊,这样一个保保险一些,或者呢,哎,或者也可以使用我们这个原始字符串,原始字符串我们没有说过什么叫原始字符串,原始字符串非常简单,就是在我们字符串前边加一什么呢?加一个R啊加一个R,那这个时候它就会变成了什么呀,原始字符串,那这时候它里边的转移字符都会被忽略,也就是说它不会把这个斜杠当成什么呀,诶转移字符去使用,那这个时候效果也是一样的啊,效果是一样,所以注意我们在写一个路径的时候,我们在,尤其是遇到在Windows系统下啊,咱们在Linux里无所谓in Linux里边就是使用我们这个普通鞋盖,而在我们Windows系统下,你使用鞋盖的时候一定要用什么呀,诶用那个正斜盖,或者用两个反应盖,再或者用我们的什么呀,原始字符串来代替啊,原始字符串来代替好,这是它那好。
18:28
接着再往下说,再往下说,还有什么情况来看着了,我现在呀,把hello这文件夹呀往上挪,挪到LESSON07里边,现在hello是不是跑到LESSON07里了?哎,那现在注意了,我这儿还写hello膝盖demo.t.tit还行不行了,哎,就不行了,为什么?因为现在这个文件是不是在它的上一级啊,你看我们的打开文件点PY是在code里,而我们hello这个文夹是不是在code,跟code是同一级啊,哎,Code同一级,所以我如果还写hello.tit哎,Hello鞋面demo.tit实际上表示的意思是什么?
19:05
哎,是去我们的这个code下去找hello,然后去找demo.t能不能找到啊,哎,肯定找不到,一执行是不是就报错了?哎,告诉你找不到,那这个时候怎么办?哎,那注意了,我们来说一下,哎,表示我们这个路径时,我们可以什么呢?哎,我们可以使用我们这个点点来干嘛呢?哎,来返回一节目录。哎,反回目录什么意思呢?现在我们是在这个code里,我现在是不是要到hello里啊,所以我得先从code出来,然后去hello里边去找demo.tit那所以这个时候我就要怎么写看着了,我直接来一个file name等于什么呢?等于个点点鞋盖,然后来一个hello,然后鞋盖来一个demo.t那这个点点表示什么意思?表示我要先从当前目录出来,当前目录谁当前目录是扣的,从它处理时候到lesson里了,哎,Lesson然后在lesson里去找hello,有没有hello,哎,有再去hello里去找demo.t我这一执行走一个,诶那这块没保存啊,保存一下再去执行,是不是也可以找到,哎,也可以找到啊,所以注意点点是返回一级目录啊,写返回几级就写几个点点,这我就不深入演示了啊,不深入演示了,还有一种情况什么呢?还有一种情况啊,这种情况我这个文件在哪儿?诶这个文件是不是在桌面啊,诶这个文件在桌面,那我怎么来打开桌面上这个文件呢?诶怎么来打开。
20:27
在桌面这文件呢,那注意了,那这个时候你要使用这种方式就比较麻烦了,哎,那如果什么呢?如果如果我们这个文件距离,哎,我们这个目标文件。哎,离。距离我们这什么呢?当前文件比较远啊,比较远,那个文件离了十万八千里,那此时我们可以什么呢?我们可以使用绝对路径啊,我们可以使用绝对路径,什么叫绝对路径,那绝对路径。
21:00
哎,绝对路径。应该干嘛?诶,应该从我们这个磁盘的一个什么呀,哎,根目录开始什么呀,开始书写啊,开始书写,所以这里边我们要用绝对路径去写的话,我应该用什么?从C冒号斜杠D冒号斜杠,从那个目录开始写,那这个路径啊,我就不重新写一遍了,我直接来打开一个我们这个CMD干嘛呢?CD这个东西在桌面上对吧?Desk top,然后这直接电压是不是在桌面的,我们这个hello.tit啊,所以在这儿呢,我直接复制一下这个路径,CTRLC复制一下,复制完了我们直接来一个这个file name啊file name等于这个就是一个什么,这个就是一个绝对路径从C盘根部开始写的,但是注意了,它有个问题,还是它是不是用了反斜盖,哎,你要么把反斜盖改成斜盖,要么使用什么原始字符串加一个二,后边我再写一个,写个谁呢叫做一个哈点T啊哈点T,那这就叫做一个绝对路径,从根开始写的什么C冒号E冒号EE冒号F号号从。
22:04
根目录开始写的都叫做一个绝对路径,那这个时候我再操作一执行是不是也可以啊,诶也可以,所以这里边我们说打开文件其实非常简单,就是调用了我们一个open这个函数,但是你要注意什么?注意我们文件的路径问题,如果文件就在当前目录下,最简单直接写名就OK了,如果文件不在当前目录下写路径啊,你在目录里边直接写什么什么里边的什么什么,如果不在这目录里边用点点干嘛呀,返回如果比较远,直接使用什么呢?使用这个绝对路径就OK了啊使用绝对路径好,那这个是我们说的一个打开文件的这么一个流程,那接下来你们自己来试一下,尤其是试着书写一下这个路径,然后你来一定要获取到file object这个对象,待会儿我们来说,我们如何去通过这个对象来操作我们的文件啊,我们来听一下。
我来说两句