Python读取文件和写入文件

1.基本格式

运行结果如下:

a.函数open( )

函数open(filename,mode)用于读取文件,返回一个file object。 所以现在我们的f是一个文件对象

参数filename:是一个字符串,用来代表文件名,如果只写文件名,就会在程序当前目录下查找,也可以像我这样指定路径

参数mode:决定了打开文件的方式,比如只读, 写入, 追加等等。详情如下:

注:此图截取自python官方文档,在Built-in Functions 中查找open( )即可查询到

b.函数close( )

在程序最后,一般要调用此函数关闭文件,否则会造成一些潜在问题

c.文件对象方法

此例子中,我的f.read( )语句就是调用了文件对象的方法 read( )

它的功能是读取这个文件的全部内容,并作为字符串返回,让我们来试一下content是什么内容:

可以看到content果然是个字符串,因为在读取文件时,python将所有文本都解读为字符串。如果你读取的是数字,并要将它作为数字使用,就必须用int( )或者float( )转换成数字

但这里注意到一个问题,我们先来看一下我test.txt原本写的是什么:

可见我只写了三行,最后一个字符是叹号!但是回头看一下我们的content的内容,发现叹号后面跟了一个 \n,很明显,

这个换行符不是我文本的内容,因为read到达文件末尾时会自动返回这个,表示文本结束,所以在print打印出来的时候,

会多打印出来一个空行!可以回到最上面看我们程序的输出的确是有多出一行的间距。要解决这个问题,只需要在print函数中使用一个

rstrip( )方法: print( content.rstrip( ) )即可不输出这个空行

####################################################################################

2.另一种格式

可以看到,这次我只用了open( ),没用close( ),会出问题吗?不会。

这次我用了关键字 withwith会让python自动选择合适的时候来关闭文件,即python判断不需要访问文件后将其关闭

所以采用这种结构,我们只管打开文件,不用操心合适关闭文件

但要注意!使用with时,open返回的文件对象只能在with的代码块中使用,即此例中,我们的f的有效区域只在该代码块中,

但是content还是可以在代码块外面使用,只不过content只是一个字符串而已,稍加改动,我们用readline( )取代read( )逐行读取,

然后把结果存进一个列表line里,这样由于列表line的每个元素都对应于文件中的一行,因此输出于文件内容完全一致

3.写入文件

3.1写入空文档

示例程序:

首先要注意的是此时用open打开文件时,要选用'w'模式,如果没有那个名字的文本,就会新建一个空文档然后进行操作

不要忘了最后要close()

经过操作之后看一下我们的操作结果,到文档路径用linux命令vim打开看一下这个文档。

可以发现,我们明明分两次进行的write操作,但是两句话居然连接在了一起,显得十分难看,这是为什么?

因为调用write( )函数的时候,python并不会自动在文本末尾添加换行符 \n所以,两句话并没有分行写,就造成了这种情况。

回想一下我们之前说read()函数的时候,它却在文档末尾会自动返回一个换行符造成我们多打印一个空行,看起来write和read还真的有一点对偶性(开玩笑的)

所以一定要养成write的好习惯,注意添加换行符。

3.2附加文档

如果有时候我们只是需要在已有的文档末尾添加新的文档的话,就可以使用 'a'模式

然后执行操作之后,同样用vim查看一下:

我们可以看到,画绿线的部分,紧跟之前的单词,很难看,问题就出在我们之前3.1中输入那两句话时,没有在末尾添加换行符;

有时候为了防止这种之前的文档末尾遗忘加换行符,我们可以在新输入的文档最前面自己加一个换行符以示区分。同时,可以看到

由于我的第一句和第二句话末尾都加了换行符,所以此次第二句和第三句都新起一行了。

文本的读取和写入基本操作就是这样了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券