Python文件和異常處理小結(jié)
文件和異常處理是Python編程中不可或缺的技能。本章將帶你從基礎(chǔ)到進(jìn)階,徹底掌握文件操作和異常處理的核心知識(shí)點(diǎn),并通過通俗易懂的示例幫助所有人理解。
10.1 從文件中讀取數(shù)據(jù)
10.1.1 讀取整個(gè)文件
要讀取文件內(nèi)容,首先需要打開文件,使用 open() 函數(shù)并指定文件路徑和模式(如 'r' 表示只讀)。例如:
with open('pi_digits.txt', 'r') as file:
contents = file.read()
print(contents)使用 with 語句可以自動(dòng)關(guān)閉文件,避免資源泄露。file.read() 會(huì)一次性讀取文件全部內(nèi)容。
10.1.2 文件路徑
- 相對(duì)路徑:相對(duì)于當(dāng)前腳本的位置,如 data/pi.txt。
- 絕對(duì)路徑:完整的系統(tǒng)路徑,如 /home/user/documents/pi.txt。
在Windows中注意反斜杠轉(zhuǎn)義(C:\\path\\to\\file)或使用原始字符串(r'C:\path\to\file'`。
10.1.4 逐行讀取與列表存儲(chǔ)
若想逐行處理文件內(nèi)容,可以使用循環(huán):
with open('pi_digits.txt') as file:
lines = file.readlines() # 將各行存入列表
for line in lines:
print(line.strip()) # 去除每行末尾的換行符10.1.6 處理百萬行大文件
直接讀取大文件可能導(dǎo)致內(nèi)存不足。此時(shí)可逐行處理:
with open('big_file.txt') as file:
for line in file:
process(line) # 每次處理一行,內(nèi)存友好10.2 寫入文件
10.2.1 寫入空文件
使用 'w' 模式打開文件,若文件不存在則會(huì)創(chuàng)建:
with open('output.txt', 'w') as file:
file.write("Hello, World!")?? 注意:'w' 模式會(huì)覆蓋原有內(nèi)容!
10.2.3 追加內(nèi)容
用 'a' 模式追加內(nèi)容到文件末尾:
with open('output.txt', 'a') as file:
file.write("\nAppended line.")10.3 異常處理:讓程序更健壯
10.3.1 處理 ZeroDivisionError
當(dāng)除數(shù)為零時(shí),程序會(huì)崩潰。通過 try-except 捕獲異常:
with open('output.txt', 'a') as file:
file.write("\nAppended line.")10.3.5 處理 FileNotFoundError
讀取不存在的文件時(shí)拋出此異常:
filename = 'missing.txt'
try:
with open(filename) as file:
content = file.read()
except FileNotFoundError:
print(f"文件 {filename} 不存在!")10.3.6 靜默失敗
若想忽略某些異常,可用 pass:
try:
# 可能出錯(cuò)的代碼
except FileNotFoundError:
pass # 靜默處理10.4 存儲(chǔ)數(shù)據(jù):JSON的妙用
10.4.1 使用 json.dump() 和 json.load()
將數(shù)據(jù)保存為JSON格式:
import json
data = {'name': 'Alice', 'age': 30}
with open('data.json', 'w') as file:
json.dump(data, file) # 寫入文件
# 讀取JSON數(shù)據(jù)
with open('data.json') as file:
loaded_data = json.load(file)
print(loaded_data['name']) # 輸出:Alice10.4.2 重構(gòu)代碼
將功能拆分為獨(dú)立函數(shù),提升可維護(hù)性:
def save_user_data(username):
"""保存用戶數(shù)據(jù)到JSON文件"""
with open('users.json', 'w') as file:
json.dump({'username': username}, file)10.5 小結(jié)與最佳實(shí)踐
- 文件操作:優(yōu)先使用 with 語句,避免忘記關(guān)閉文件。
- 異常處理:精準(zhǔn)捕獲特定異常(如 FileNotFoundError),避免籠統(tǒng)的 except。
- 數(shù)據(jù)存儲(chǔ):JSON適合存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),且跨平臺(tái)兼容。
- 代碼風(fēng)格:添加清晰的注釋,拆分復(fù)雜操作為函數(shù)。
通過本章學(xué)習(xí),你將能夠優(yōu)雅地處理文件讀寫、從容應(yīng)對(duì)程序錯(cuò)誤,并掌握數(shù)據(jù)持久化的核心技巧?,F(xiàn)在,動(dòng)手寫一段代碼試試吧!
到此這篇關(guān)于Python文件和異常詳解的文章就介紹到這了,更多相關(guān)Python文件和異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)遍歷指定路徑下的所有JSON文件
這篇文章主要為大家詳細(xì)介紹了如何使用Python的os和json模塊遍歷指定路徑下的所有JSON文件,包括文件檢查、讀取、解析及錯(cuò)誤處理過程,感興趣的小伙伴可以了解下2026-03-03
如何徹底解決python?NameError:name?'__file__'?is?not?
這篇文章主要給大家介紹了關(guān)于如何徹底解決python?NameError:name?'__file__'?is?not?defined的相關(guān)資料,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
關(guān)于flask路由app.route及路由參數(shù)的各種用法解析
我們?cè)陂_發(fā)過程中,編寫項(xiàng)目時(shí)所使用的路由往往是指代了框架/項(xiàng)目中用于完成路由功能的類,這個(gè)類一般就是路由類,簡稱路由,這篇文章主要介紹了有關(guān)flask路由app.route及路由參數(shù)的各種用法解析,需要的朋友可以參考下2024-03-03
關(guān)于python3?opencv?圖像二值化的問題(cv2.adaptiveThreshold函數(shù))
這篇文章主要介紹了python3?opencv?圖像二值化cv2.adaptiveThreshold函數(shù)的相關(guān)知識(shí),結(jié)合示例代碼介紹了adaptiveThreshold方法的用法,需要的朋友可以參考下2022-04-04
Python實(shí)現(xiàn)直方圖均衡基本原理解析
這篇文章主要介紹了Python實(shí)現(xiàn)直方圖均衡基本原理,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08

