Python文件操作基礎(chǔ)及異常處理
在這篇將詳細介紹如何打開文件、讀寫文件,以及如何處理文件操作中的異常。
1. 打開文件:open()
open()
函數(shù)用于打開文件,并返回一個文件對象,你可以通過這個對象操作文件內(nèi)容。打開文件時,需要指定文件路徑和操作模式。
語法:
file_object = open(file_path, mode)
常見操作模式:
模式 | 描述 |
---|---|
'r' | 讀取文件(默認模式),文件必須存在。 |
'w' | 寫入文件,如果文件存在則清空內(nèi)容;如果文件不存在則創(chuàng)建。 |
'a' | 追加模式,將新內(nèi)容添加到文件末尾。 |
'b' | 二進制模式,用于操作非文本文件(如圖片、音頻)。 |
'rb' | 以二進制模式讀取文件。 |
'wb' | 以二進制模式寫入文件。 |
示例:打開文件用于讀?。?/h3>
file = open('example.txt', 'r') # 打開文件用于讀取
print(file.read()) # 打印文件內(nèi)容
file.close() # 關(guān)閉文件
file = open('example.txt', 'r') # 打開文件用于讀取 print(file.read()) # 打印文件內(nèi)容 file.close() # 關(guān)閉文件
注意:如果忘記關(guān)閉文件,可能會占用系統(tǒng)資源或?qū)е聰?shù)據(jù)未及時寫入磁盤。
2. 使用 with 語句自動管理文件
使用 with
語句打開文件時,Python 會在代碼塊結(jié)束后自動關(guān)閉文件,避免忘記調(diào)用 close()
。
讀取文件內(nèi)容:
with open('example.txt', 'r') as file: content = file.read() # 讀取整個文件內(nèi)容 print(content) # 打印文件內(nèi)容
寫入文件內(nèi)容:
with open('example.txt', 'w') as file: file.write('Hello, Python!\n') # 寫入一行文本
追加內(nèi)容:
with open('example.txt', 'a') as file: file.write('This is a new line.\n') # 在文件末尾追加一行
3. 讀取文件的不同方式
Python 提供了多種讀取文件內(nèi)容的方式,適用于不同的場景。
方法 | 描述 | 示例 |
---|---|---|
read() | 讀取整個文件內(nèi)容為字符串 | content = file.read() |
readline() | 讀取文件的一行內(nèi)容 | line = file.readline() |
readlines() | 讀取所有行并返回列表 | lines = file.readlines() |
示例:逐行讀取文件:
示例1
with open('example.txt', 'r') as file: for line in file: print(line.strip()) # 去除換行符并打印每一行
示例2
with open('example.txt', 'r') as file: while True: line = file.readline() # 讀取一行 if not line: # 如果是空字符串,說明文件結(jié)束 break print(line.strip()) # 打印當前行內(nèi)容
小提示: 如果是在某系統(tǒng)使用 ~/xxx.txt情況 , ~
符號(代表用戶的主目錄)通常不會直接在文件路徑中被識別, 通過下面的方案改進
import os path = os.path.expanduser("~/xxx.txt") with open(path, 'r') as file: ......
4. 文件異常處理
文件操作中可能會遇到錯誤,例如文件不存在或沒有權(quán)限。我們可以使用 try-except
語句來捕獲這些異常,避免程序崩潰。
常見異常:
FileNotFoundError
:文件不存在。PermissionError
:沒有權(quán)限訪問文件。
示例:捕獲文件異常:
try: with open('nonexistent.txt', 'r') as file: content = file.read() print(content) except FileNotFoundError: print("錯誤:文件不存在。請檢查路徑。") except PermissionError: print("錯誤:沒有權(quán)限讀取該文件。") except Exception as e: print(f"發(fā)生了其他錯誤:{e}")
5. 二進制文件操作
對于非文本文件(如圖片或音頻),需要以二進制模式讀取和寫入。
示例:讀取二進制文件:
with open('image.jpg', 'rb') as file: data = file.read() print(data[:10]) # 打印前10個字節(jié)的數(shù)據(jù)
示例:寫入二進制文件:
with open('copy.jpg', 'wb') as file: with open('image.jpg', 'rb') as src: file.write(src.read()) # 復制圖片
6. 文件路徑說明
在 open()
中,文件路徑可以是絕對路徑或相對路徑:
絕對路徑:從根目錄開始的完整路徑。
示例:open('/Users/user/documents/file.txt', 'r')
相對路徑:相對于當前工作目錄的路徑。
示例:open('file.txt', 'r')
如果路徑中有中文或空格,可以使用原始字符串(r''
)避免轉(zhuǎn)義錯誤:
with open(r'C:\用戶\文檔\文件.txt', 'r') as file: print(file.read())
7. 總結(jié)
常見的文件操作步驟:
- 使用
open()
或with
語句打開文件。 - 選擇合適的讀取或?qū)懭肽J剑?code>'r'、
'w'
、'a'
等)。 - 使用
read()
、write()
、readlines()
等方法進行操作。 - 如果使用
open()
,操作完成后要調(diào)用close()
關(guān)閉文件。 - 使用
try-except
捕獲文件操作中的異常。
完整代碼示例:
try: with open('example.txt', 'r') as file: print("文件內(nèi)容:") print(file.read()) except FileNotFoundError: print("文件不存在,請檢查路徑。") except PermissionError: print("沒有權(quán)限訪問該文件。") except Exception as e: print(f"發(fā)生了未知錯誤:{e}")
8. 小貼士
- 文件操作要小心:寫入模式
'w'
會清空文件內(nèi)容,請確認無誤后再使用。 - 處理換行符:讀取文本時,可以使用
strip()
去除多余的換行符。 - 二進制操作:當處理圖片、音頻等非文本文件時,記得使用
'rb'
或'wb'
。
到此這篇關(guān)于Python文件操作基礎(chǔ)及異常處理的文章就介紹到這了,更多相關(guān)Python文件操作基礎(chǔ)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)帶錯誤處理功能的遠程文件讀取方法
這篇文章主要介紹了python實現(xiàn)帶錯誤處理功能的遠程文件讀取方法,涉及Python使用socket操作遠程文件的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04詳解pandas中iloc, loc和ix的區(qū)別和聯(lián)系
這篇文章主要介紹了詳解pandas中iloc, loc和ix的區(qū)別和聯(lián)系,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03python判斷列表的連續(xù)數(shù)字范圍并分塊的方法
今天小編就為大家分享一篇python判斷列表的連續(xù)數(shù)字范圍并分塊的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11三步實現(xiàn)Django Paginator分頁的方法
這篇文章主要介紹了三步實現(xiàn)Django Paginator分頁的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06基于Python和openCV實現(xiàn)圖像的全景拼接詳細步驟
這篇文章主要介紹了基于Python和openCV實現(xiàn)圖像的全景拼接,本文分步驟通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-10-10pytorch報錯問題:ValueError: num_samples should be
這篇文章主要介紹了pytorch報錯問題:ValueError: num_samples should be a positive integer value, but got num_samples=0的解決方案,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Python中unittest模塊做UT(單元測試)使用實例
這篇文章主要介紹了Python中unittest模塊做UT(單元測試)使用實例,本文直接給出待測試的類、測試類和測試結(jié)果以及測試總結(jié),需要的朋友可以參考下2015-06-06