这两天身体不给力,拖欠了每天发讲座的约定,看官见谅。
红头文件,是某国特别色的东西,在python里不需要,python里要处理的是计算机中的文件,包括文本的、图片的、音频的、视频的等等,还有不少没见过的扩展名的,在linux中,不是所有的东西都被保存到文件中吗?文件,在python中,是一种对象,就如同已经学习过的字符串、数字等一样。
先要在交互模式下查看一下文件都有哪些属性:
1 2 |
|
然后对部分属性进行详细说明,就是看官学习了。
打开文件
在某个文件夹下面建立了一个文件,名曰:130.txt,并且在里面输入了如下内容:
1 2 3 |
|
此文件以供三行。
下图显示了这个文件的存储位置:
在上面截图中,我在当前位置输入了python(我已经设置了环境变量,如果你没有,需要写全启动python命令路径),进入到交互模式。在这个交互模式下,这样操作:
1 2 3 4 5 6 7 8 9 |
|
将打开的文件,赋值个变量f,这样也就是变量f跟对象文件130.txt用线连起来了(对象引用)。
接下来,用for来读取文件中的内容,就如同读取一个前面已经学过的序列对象一样,如list、str、tuple,把读到的文件中的每行,赋值给变量line。也可以理解为,for循环是一行一行地读取文件内容。每次扫描一行,遇到行结束符号\n表示本行结束,然后是下一行。
从打印的结果看出,每一样跟前面看到的文件内容中的每一行是一样的。只是行与行之间多了一空行,前面显示文章内容的时候,没有这个空行。或许这无关紧要,但是,还要深究一下,才能豁然。
在原文中,每行结束有本行结束符号\n,表示换行。在for语句汇总,print line表示每次打印完line的对象之后,就换行,也就是打印完line的对象之后会增加一个\n。这样看来,在每行末尾就有两个\n,即:\n\n,于是在打印中就出现了一个空行。
1 2 3 4 5 6 7 |
|
在进行上述操作的时候,有没有遇到这样的情况呢?
1 2 3 4 5 6 7 8 9 10 11 12 |
|
如果看官没有遇到上面问题,可以试试。遇到了,这就解惑。不是什么错误,是因为前一次已经读取了文件内容,并且到了文件的末尾了。再重复操作,就是从末尾开始继续读了。当然显示不了什么东西,但是python并不认为这是错误,因为后面就会讲到,或许在这次读取之前,已经又向文件中追加内容了。那么,如果要再次读取怎么办?就从新来一边好了。
特别提醒看官,因为当前的交互模式是在该文件所在目录启动的,所以,就相当于这个实验室和文件130.txt是同一个目录,这时候我们打开文件130.txt,就认为是在本目录中打开,如果文件不是在本目录中,需要写清楚路径。
比如:在上一级目录中(~/Documents/ITArticles/BasicPython),加入我进入到那个目录中,运行交互模式,然后试图打开130.txt文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
创建文件
上面的实验中,打开的是一个已经存在的文件。如何创建文件呢?
1 2 |
|
就这样创建了一个文件?并写入了文件内容呢?看看再说:
真的就这样创建了新文件,并且里面有那句话呢。
看官注意了没有,这次我们同样是用open()这个函数,但是多了个"w",这是在告诉python用什么样的模式打开文件。也就是说,用open()打开文件,可以有不同的模式打开。看下表:
模式 描述r 以读方式打开文件,可读取文件信息。w 以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建r+ 以读写方式打开文件,可对文件进行读和写操作。w+ 消除文件内容,然后以读写方式打开文件。a+ 以读写方式打开文件,并把文件指针移到文件尾。b 以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。
从表中不难看出,不同模式下打开文件,可以进行相关的读写。那么,如果什么模式都不写,像前面那样呢?那样就是默认为r模式,只读的方式打开文件。
1 2 3 4 5 6 |
|
可以用这种方式查看当前打开的文件是采用什么模式的,上面显示,两种模式是一样的效果。下面逐个对各种模式进行解释
"w":以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容
131.txt这个文件是存在的,前面建立的,并且在里面写了一句话:This is a file
1 2 3 4 5 6 7 8 |
|
查看文件内容:
1 2 3 |
|
"a":以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建
1 2 3 |
|
查看文件内容:
1 2 3 4 |
|
其它项目就不一一讲述了。看官可以自己实验。
本讲先到这里,明天继续文件。感冒药吃了,昏昏欲睡。