Python讀寫文件(文本/二進制)的方法詳解與實戰(zhàn)
文件操作是 Python 編程中最常見的基礎技能之一。 無論是保存日志、讀取配置、還是處理圖片和視頻文件,文件讀寫都是必不可少的能力。
本文將帶你深入理解 Python 中文件操作的核心方法: 打開與關閉文件 讀取與寫入文本文件 處理二進制文件(圖片、音頻等) 使用 with 上下文管理器讓代碼更優(yōu)雅
一、文件操作的基本流程
Python 的文件讀寫操作一般遵循以下 4 步:
- 打開文件(
open()) - 讀/寫文件(
read()/write()) - 關閉文件(
close()) - 可選:異常處理或使用上下文管理器
一個典型示例:
# 打開文件(只讀模式)
f = open("example.txt", "r", encoding="utf-8")
# 讀取內容
content = f.read()
print(content)
# 關閉文件
f.close()
二、打開文件:open() 函數(shù)詳解
open() 是文件操作的入口函數(shù):
open(file, mode='r', encoding=None)
| 參數(shù) | 含義 |
|---|---|
| file | 文件路徑 |
| mode | 打開模式(見下表) |
| encoding | 編碼方式(常用 "utf-8") |
常見文件打開模式
| 模式 | 含義 | 是否創(chuàng)建新文件 |
|---|---|---|
| 'r' | 只讀(默認) | ? |
| 'w' | 只寫(覆蓋原內容) | ? |
| 'a' | 追加寫入 | ? |
| 'rb' | 以二進制讀取 | ? |
| 'wb' | 以二進制寫入(覆蓋) | ? |
| 'ab' | 以二進制追加寫入 | ? |
| 'r+' | 讀寫模式 | ? |
三、讀取文本文件內容
Python 提供了多種讀取方法,根據(jù)需求靈活選擇。
read()—— 一次性讀取全部內容
with open("data.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
readline()—— 每次讀取一行
with open("data.txt", "r", encoding="utf-8") as f:
line = f.readline()
while line:
print(line.strip()) # 去掉換行符
line = f.readline()
readlines()—— 一次讀取所有行,返回列表
with open("data.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
for line in lines:
print(line.strip())
推薦使用 with 上下文:會自動關閉文件,防止資源泄漏。
四、寫入文本文件
寫文件也很簡單:
# 覆蓋寫入(原內容會被清空)
with open("output.txt", "w", encoding="utf-8") as f:
f.write("Python 文件寫入示例\n")
f.write("第二行內容\n")
# 追加寫入
with open("output.txt", "a", encoding="utf-8") as f:
f.write("這是追加的內容\n")
運行后你可以在當前目錄找到 output.txt 文件,查看寫入結果。
五、文件路徑與相對路徑
有時我們需要操作不同目錄下的文件:
# 絕對路徑
f = open("/Users/admin/Desktop/data.txt", "r")
# 相對路徑
f = open("subfolder/info.txt", "r")
如果不確定當前工作路徑,可以打?。?/p>
import os print(os.getcwd()) # 輸出當前工作目錄
六、操作二進制文件(圖片、音頻等)
對于非文本文件(如圖片、音頻、視頻等),需要使用 二進制模式(b)進行讀寫。
讀取二進制文件
with open("image.jpg", "rb") as f:
data = f.read()
print("文件大?。?, len(data), "字節(jié)")
復制二進制文件
with open("image.jpg", "rb") as src:
with open("copy.jpg", "wb") as dst:
dst.write(src.read())
print("圖片復制完成!")
這種方式也常用于備份視頻、音頻、壓縮包等文件。
七、文件異常處理
文件可能不存在、權限不足、磁盤滿等問題都可能導致程序崩潰。 使用 try...except 可以增強程序穩(wěn)定性:
try:
with open("data.txt", "r", encoding="utf-8") as f:
print(f.read())
except FileNotFoundError:
print("? 文件不存在!")
except PermissionError:
print("?? 沒有權限訪問文件!")
else:
print("? 文件讀取成功。")
finally:
print("操作結束。")
八、實戰(zhàn)案例:統(tǒng)計文本文件行數(shù)與字數(shù)
下面我們結合所學知識,完成一個小任務
需求:
編寫程序,讀取一個文本文件,統(tǒng)計其中的行數(shù)和單詞數(shù)。
def count_file_info(filename):
try:
with open(filename, "r", encoding="utf-8") as f:
lines = f.readlines()
word_count = sum(len(line.split()) for line in lines)
print(f"?? 文件行數(shù): {len(lines)}")
print(f"?? 總單詞數(shù): {word_count}")
except FileNotFoundError:
print("? 文件未找到!")
count_file_info("article.txt")
輸出示例:
?? 文件行數(shù): 20
?? 總單詞數(shù): 157
九、總結與最佳實踐
| 技巧 | 建議 |
|---|---|
| 使用 with open() | 自動關閉文件,推薦使用 |
| 指定 encoding='utf-8' | 避免中文亂碼 |
| 模式選擇 'r' / 'w' / 'a' | 根據(jù)需求靈活選擇 |
| 處理二進制文件時加 'b' | 如:'rb'、'wb' |
| 使用異常捕獲 | 提高程序健壯性 |
結語
掌握文件讀寫,是 Python 程序員的基本功。 從日志系統(tǒng)、配置文件到圖片批處理,文件操作無處不在。 通過靈活使用 open()、with、read()、write(),你就能輕松完成各種數(shù)據(jù)輸入輸出任務!
到此這篇關于Python讀寫文件(文本/二進制)的方法詳解與實戰(zhàn)的文章就介紹到這了,更多相關Python讀寫文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
keras實現(xiàn)theano和tensorflow訓練的模型相互轉換
這篇文章主要介紹了keras實現(xiàn)theano和tensorflow訓練的模型相互轉換,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
在ironpython中利用裝飾器執(zhí)行SQL操作的例子
這篇文章主要介紹了在ironpython中利用裝飾器執(zhí)行SQL操作的例子,文章中以操作MySQL為例,需要的朋友可以參考下2015-05-05
Python實現(xiàn)查詢某個目錄下修改時間最新的文件示例
這篇文章主要介紹了Python實現(xiàn)查詢某個目錄下修改時間最新的文件,涉及Python使用os與shutil模塊針對文件的遍歷、屬性獲取、讀寫等相關操作技巧,需要的朋友可以參考下2018-08-08
Python簡單實現(xiàn)的代理服務器端口映射功能示例
這篇文章主要介紹了Python簡單實現(xiàn)的代理服務器端口映射功能,結合實例形式分析了Python模擬服務器、代理服務器及客戶端訪問的相關操作技巧,需要的朋友可以參考下2018-04-04

