区别 |Python的 open() 和with open() as
Posted 听见涛声_数说张小桃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区别 |Python的 open() 和with open() as相关的知识,希望对你有一定的参考价值。
https://www.jianshu.com/p/34d7fff5fc51
1、open() 方法
意义:打开一个文件并返回文件对象,如果该文件无法被打开,会抛出OSError。最后一定要调用close()方法保证关闭文件对象。
公式:open( file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数(一般只用到file,mode和encoding)
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener:
mode参数
方式 | 解释 |
---|---|
‘r‘ | 读模式(默认) |
‘w‘ | 写模式,打开时会清空文件 |
‘x‘ | 写模式,新建一个文件,如果该文件已存在则会报错。 |
‘a‘ | 添加模式,写文件只能写到文件末尾,不能读 |
‘b‘ | 二进制模式(默认为文本模式,如果要以二进制模式打开,加上‘b‘) |
‘t‘ | 文本模式 (默认) |
‘+‘ | 打开一个文件进行更新(可读可写) |
‘U‘ | 通用换行模式(不推荐) |
注意:
(1)r+:可读写,打开时不清空文件,可写到文件任何位置。默认在文件开始,因此会覆写文件。
(2)a+:可读写,打开时不清空文件,只能写到文件末尾。
(3)使用open()方法,最后一定要保证关闭文件对象,即调用close()方法。原因:当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘同时释放资源。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。
2、with open() as 用法
正常情况下,想要打开一个文件并且保证该文件会被关闭。我们需要
try: f = open(‘C:/path/to/file‘, ‘r‘) # do something about f finally: if f: f.close()
使用with...as...能确保文件一定被关闭。
with open(‘/path/to/file‘, ‘r‘) as f: f.read() ...
以上是关于区别 |Python的 open() 和with open() as的主要内容,如果未能解决你的问题,请参考以下文章