码迷,mamicode.com
首页 > 编程语言 > 详细

区别 |Python的 open() 和with open() as

时间:2019-12-27 09:37:48      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:format   open()   资源   odi   清空文件   ext   ict   bdc   更新   

 

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

标签:format   open()   资源   odi   清空文件   ext   ict   bdc   更新   

原文地址:https://www.cnblogs.com/zwt20120701/p/12105322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!