區別 |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()
    ...

 

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM