Python基礎 | 使用with open() as讀寫文件


一、讀取文件拋出異常

在之前的博文里,我們說到:要以讀文件的模式打開一個文件對象,使用Python內置的open()函數,傳入文件名和標示符:

f = open('test.txt', 'r')


標示符'r'表示讀文件。這樣,我們就成功地打開了一個文件。但是,如果這個文件不存在,那么此時open()函數就會拋出一個IOError的錯誤,並且給出錯誤碼和詳細的信息告訴我們文件不存在,如下:

Traceback (most recent call last):
File "G:\pyStudy\NotepadPyTest\Test", line 1, in <module>
f = open('test.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'


如果文件成功打開,那么此時就可以調用read()方法讀取文件中的內容。

f.read()

特別需要注意的是: 在操作文件完成之后,需要調用close()方法關閉文件。因為文件對象會占用操作系統的資源,並且操作系統同一時間能打開的文件數量也是有限的:

f.close()

二、分析解決上述問題

由於文件讀寫時有可能產生IOError,一旦出錯,后面的f.close()就不會調用。所以,為了保證無論是否出錯都能正確地關閉文件,我們可以使用try ... finally通過捕捉異常、處理異常來實現。

如果能保證文件打開沒有異常的情況下,我們每次都這么寫,實在太繁瑣。所以,Python引入了with語句來自動幫我們調用close()方法。也就是說:文件讀取的這個操作,只有在with語句內部才會生效,不會離開。

三、with open() as讀寫文件

語法:

with open(文件名, 模式) as 文件對象:
文件對象.方法()

實例:

with open('test.txt', 'r') as f:
print(f.read())

由此可見:代碼更加簡潔、優美,並且不必調用close()方法。

注意:with語句不僅可以用來讀文件,還可以寫文件,具體根據需求。

四、File對象屬性總結

文件對象屬性 描述
file.closed	表示文件已經被關閉,否則為False
file.mode	打開文件時使用的訪問模式
file.encoding	文件所使用的編碼
file.name	文件名
file.newlines	未讀取到行分隔符時為None

 

來源:https://luckylifes.blog.csdn.net/article/details/107721072


免責聲明!

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



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