前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python读取文件和写入文件

Python读取文件和写入文件

作者头像
TeeyoHuang
发布2019-05-25 22:29:29
3.5K0
发布2019-05-25 22:29:29
举报

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中输入那两句话时,没有在末尾添加换行符;

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年01月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.基本格式
    • a.函数open( )
      • b.函数close( )
        • c.文件对象方法
        • 2.另一种格式
        • 3.写入文件
          • 3.1写入空文档
            • 3.2附加文档
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档