python文件读写 with open()

python文件读写 with open(),第1张

阅读源码可以看出除了file参数其他参数都为缺省,其中mode是一个可选字符串,指定文件打开模式。它默认为“r”,这意味着文本阅模式。其他参数没有去深究,暂时没有用到。我们常用用的就是"file"、"mode"参数,file为文件路径这个不多讲,重点说一下mode,因为笔者刚开始学习python对with open()文件 *** 作一知半解,百度很多次没有找到自己想要的解决方案,于是去阅读python源码。

以上的mode参数都是可以自由组合,这一点在源码的描述中有

再此记录一下如果使用pickle.dump()模块序列化对象时候,with open()中的mode的参数一定要使用含 b 的组合模式,使用二进制模式 *** 作文本写入。如不使用二进制写入则会报出一下错误。

20181122 qzd

这样直接打开文件,如果出现异常(如,读取文件过程中文件不存在),则直接出现错误,close命令无法执行,文件无法关闭。

好处: 用with语句的好处就是到达语句末尾时会自动关闭文件,即使出现异常。

with语句实际上是一个非常通用的结构,允许你使用所谓的上下文管理器。上下文管理器是支持两个方法的对象:_ enter_ 和 _ exit_ 。

方法_ enter_ 不接受任何参数,在进入with语句时被调用,其返回值被赋给关键字as后面的变量。

方法_ exit_ 接受三个参数:异常类型、异常对象和异常跟踪。它在离开方法时被调用(通过前述参数将引发的异常提供给它)。如果_ exit_ 返回False,将抑制所有的异常。

文件也可用作上下文管理器。它们的方法_ enter_ 返回文件对象本身,而方法_ exit_ 关闭文件。

with语句作用效果相当于上面的try-except-finally

我们之前使用open方法读取文件

细心的朋友应该注意到,我们用open()打开文件以后,后面会跟着一个f.close()方法用来关闭文件,但是每次这么写,会很麻烦。

所以,我们接下来介绍一下with open()的用法

调用read()方法,会一次性读取全部文件内容,当文件内容较小时比较试用,但是当文件内容过大,很容易导致运行内存100%,所以我们可以反复调用read(size)来设置每次读取的字节内容。

写入文件内容时:

我们写入文件内容时,系统并不会立刻就把所有数据写入到磁盘,它是先放到内存中缓存,等到空闲的时候再慢慢写入到磁盘。

当调用close()方法时,系统才能保证把剩余没有写入的数据全部写入到磁盘。假如我们忘记调用了close()方法,那很可能导致我们的数据遗失。

为了保证万无一失,最好是使用with open()进行内容的读写。

try...finally

我在之前的文章里面讲过try...finally,finally里面的内容是不管是否发生异常都会被执行。

所以,对于open()方法我们有另一种写法:

但是呢,这种方法相比with open()实在是太麻烦了,所以我们只是简单说一下,并不建议大家去使用这个方法。

多个文件的读写方式

with open()和open()读写文件的方法是通用的,没有区别


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11414962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存