Python从零开始系列连载(20)——Python文件操作(下)

文件写入

 

之前讲过了文件打开创建和关闭,我们接着来谈谈文件写入

 

之前我们说了使用open()加上文件的绝对路径或者相对路径可以打开文件

 

这里我们讲一个更简单的方法

 

我们导入os模块

 

os模块是和操作系统相关的模块

 

在Python中这样操作:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

这段代码指出了当前的工作目录

 

我们在学习资料.txt中加入如下内容,并且保存

 

Python从零开始系列连载(20)——Python文件操作(下)

 

我们在Python中打开这个文件:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

因为之前指出了当前目录,所以可以给出相对路径即可(学习资料.txt在当前的工作路径)

 

我们使用read()方法可以读取文本内容

 

Python从零开始系列连载(20)——Python文件操作(下)

 

我们还可以使用write()方法写入内容:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

报错啦!这不科学啊!小明,你来解释一下!

 

小明:老湿,是不是你的文本保存了什么不健康的信息?

 

小明,你不要把自己的经历经验强加给别人!

 

小红:老师,上节课说过,默认的打开模式是 r  (只读),所以不能写入.

 

嗯,小红说的对,我们修改一下,首先关闭文档

 

Python从零开始系列连载(20)——Python文件操作(下)

 

此时我们打开该txt:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

内容已经写进去了!

 

我们在Python中读出来:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

如果再次读取呢?

 

Python从零开始系列连载(20)——Python文件操作(下)

 

发现读出来的内容为空!

 

解释一下,这里的read()方法相当于读取全部内容,如果读完内容,再次读取时候,书签已经在文章末尾,再次往后读当然没有内容啦~

 

如果我只想读取一行呢?

Python从零开始系列连载(20)——Python文件操作(下)

 

文本一共两行,如果读取完最后一行,再次读取和上面的read()一样,当然没内容啦~

 

如果我想读取多行呢?

 

小红:老师,可以使用循环!

 

很好,我们试试!

 

Python从零开始系列连载(20)——Python文件操作(下)

 

可是为什么只有第二句被读出来了呢?

 

因为while中的判断已经执行了一次readline()

 

而在print()中的readline()执行读出的是第二句

 

当然,我们可以换成for循环:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

小明:老湿!如果你不知道有多少行呢?你这样指定读取两次算是作弊!

 

小明这个问题提的好!我们这里引进一个方便的方法:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

readlines()方法将每行内容作为列表元素,返回的是一个列表

 

小明:这个看起来不舒服啊,老湿给改改呗!

 

小红:老师,我知道怎么改!

 

Python从零开始系列连载(20)——Python文件操作(下)

 

小红学得很好!

 

其实,这个还能改的更有派森特色!你们知道怎么改么?

 

【小明和小红均摇头

 

是时候展现真正的技术了!

 

Python从零开始系列连载(20)——Python文件操作(下)

 

小明:老湿,我看懂了!你用的列表生成式,可是为啥你要加个 g = ?

 

小明今天的问题提的都很好啊!如果不加,我们看看内容

 

Python从零开始系列连载(20)——Python文件操作(下)

 

会返回列表,而这个列表的元素是None,因为print( ) 函数作为列表的元素是没返回值的

 

小明:老湿,你说的这个不好理解啊

 

好的,我们举个栗子:

 

Python从零开始系列连载(20)——Python文件操作(下)

 

将print()赋值给 i

我们打印 i 发现是None

 

小明:哦哦哦哦哦~我懂了!

 

下课

人生苦短,我选Python

未完待续,连载中.....

 

今日作业:

自己用Python创建一个文件,写一首(手)诗(湿)并且读出来