Python讀取TXT文件的全攻略
Python 讀取 txt 文件是最基礎的文件操作之一,核心通過內(nèi)置的open()函數(shù)實現(xiàn),配合不同的讀取方法可適配小文件、大文件、按行讀取、按字節(jié)讀取等不同場景。本文從基礎到進階,結(jié)合實例講解所有常用方法。
一、核心基礎:open()函數(shù)與文件打開模式
1.open()函數(shù)的基本參數(shù)
open(file, mode='r', encoding=None)
| 參數(shù) | 說明 |
|---|---|
file | 文件路徑(相對路徑:相對于當前 Python 腳本的路徑;絕對路徑:完整路徑) |
mode | 打開模式(默認r,只讀模式),常用模式見下表 |
encoding | 文件編碼格式(推薦顯式指定,如utf-8、gbk,避免亂碼) |
2. 常用文件打開模式
| 模式 | 作用 |
|---|---|
r | 只讀模式(默認),文件不存在則報錯 |
r+ | 讀寫模式,文件不存在則報錯 |
rb | 二進制只讀模式(用于非文本文件,如圖片、視頻,無需指定 encoding) |
a | 追加模式,文件不存在則創(chuàng)建 |
w | 寫入模式,文件不存在則創(chuàng)建,存在則清空原有內(nèi)容 |
3. 關鍵:使用with語句(推薦)
with語句會自動關閉文件,避免因忘記調(diào)用close()導致的資源泄漏,是 Python 讀取文件的最佳實踐。
# 基本結(jié)構(gòu)
with open("test.txt", "r", encoding="utf-8") as f:
# 讀取文件的操作
content = f.read()
二、常用讀取方法(按場景分類)
先準備一個測試文件test.txt,內(nèi)容如下:
Python讀取txt文件 這是第2行內(nèi)容 Hello World! 這是最后一行
場景 1:小文件 → 一次性讀取整個文件(read())
適合文件體積小(幾 KB~ 幾十 KB),需要一次性獲取所有內(nèi)容的場景。
# 讀取整個文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read() # 返回字符串,包含所有內(nèi)容(包括換行符\n)
print("文件全部內(nèi)容:")
print(content)
輸出結(jié)果:
文件全部內(nèi)容: Python讀取txt文件 這是第2行內(nèi)容 Hello World! 這是最后一行
場景 2:中等文件 → 讀取所有行到列表(readlines())
將文件的每一行作為列表的一個元素,方便后續(xù)通過索引、切片處理行數(shù)據(jù)。
with open("test.txt", "r", encoding="utf-8") as f:
lines = f.readlines() # 返回列表,每個元素是一行內(nèi)容(包含換行符\n)
print("文件的行列表:", lines)
print("第2行內(nèi)容:", lines[1].strip()) # strip()去掉換行符和首尾空格
輸出結(jié)果:
文件的行列表: ['Python讀取txt文件\n', '這是第2行內(nèi)容\n', 'Hello World!\n', '這是最后一行'] 第2行內(nèi)容: 這是第2行內(nèi)容
場景 3:任意文件 → 逐行讀取(for循環(huán)遍歷文件對象,推薦)
這是最高效、最內(nèi)存友好的方式,逐行讀取,不一次性加載整個文件,適合所有場景(尤其是大文件)。
with open("test.txt", "r", encoding="utf-8") as f:
print("逐行讀取文件:")
for line in f: # 直接遍歷文件對象,每次返回一行
print(line.strip()) # strip()去除換行符和多余空格
輸出結(jié)果:
逐行讀取文件: Python讀取txt文件 這是第2行內(nèi)容 Hello World! 這是最后一行
場景 4:精準控制 → 按字節(jié) / 字符讀?。╮ead(n))
read(n)可指定讀取的字符數(shù)(文本模式)或字節(jié)數(shù)(二進制模式),適合需要分段讀取的場景。
with open("test.txt", "r", encoding="utf-8") as f:
content1 = f.read(6) # 讀取前6個字符
print("前6個字符:", content1)
content2 = f.read(3) # 從當前位置繼續(xù)讀取3個字符
print("后續(xù)3個字符:", content2)
輸出結(jié)果:
前6個字符:Python 后續(xù)3個字符:讀取t
場景 5:逐行讀?。╮eadline())
每次調(diào)用readline()讀取一行,直到返回空字符串(文件結(jié)束),適合需要手動控制讀取進度的場景。
with open("test.txt", "r", encoding="utf-8") as f:
line1 = f.readline() # 讀取第一行
line2 = f.readline() # 讀取第二行
print("第一行:", line1.strip())
print("第二行:", line2.strip())
輸出結(jié)果:
第一行:Python讀取txt文件 第二行:這是第2行內(nèi)容
三、進階場景處理
1. 處理大文件(GB 級)
大文件的核心是逐行讀取(避免一次性加載到內(nèi)存),使用for循環(huán)遍歷文件對象即可:
# 讀取GB級大文件,逐行處理
with open("big_file.txt", "r", encoding="utf-8") as f:
for line in f:
# 處理每一行(如統(tǒng)計行數(shù)、提取關鍵信息)
pass
2. 處理不同編碼的 txt 文件
Windows 系統(tǒng)下的 txt 文件常使用gbk/gb2312編碼,Linux/Mac 下多為utf-8,若編碼不匹配會報UnicodeDecodeError,需顯式指定編碼:
# 讀取GBK編碼的文件
with open("gbk_file.txt", "r", encoding="gbk") as f:
content = f.read()
print(content)
# 讀取帶BOM的UTF-8文件(Windows記事本保存的UTF-8文件常帶BOM)
with open("utf8_bom_file.txt", "r", encoding="utf-8-sig") as f:
content = f.read()
print(content)
3. 二進制模式讀?。╮b)
用于讀取非文本文件(如圖片、視頻),或需要處理字節(jié)數(shù)據(jù)的場景:
with open("test.txt", "rb") as f:
content = f.read() # 返回字節(jié)串(bytes)
print("二進制內(nèi)容:", content)
# 轉(zhuǎn)換為字符串(需指定編碼)
print("轉(zhuǎn)換為字符串:", content.decode("utf-8"))
四、常見問題與解決方法
問題 1:FileNotFoundError(文件不存在)
- 解決:檢查文件路徑是否正確(相對路徑是否相對于當前腳本,絕對路徑是否完整)。
問題 2:UnicodeDecodeError(編碼錯誤)
- 解決:顯式指定正確的編碼(如
utf-8、gbk、utf-8-sig)。
問題 3:讀取的內(nèi)容有多余的換行符 / 空格
- 解決:使用
strip()(去除首尾空格和換行符)、rstrip("\n")(僅去除換行符)。
問題 4:文件權限不足(PermissionError)
- 解決:檢查文件的讀寫權限,確保當前用戶有讀取權限。
五、總結(jié):方法選擇建議
| 場景 | 推薦方法 | 優(yōu)點 |
|---|---|---|
| 小文件(<100KB) | read() 一次性讀取 | 簡單快捷 |
| 中等文件(100KB~1MB) | readlines() 讀取到列表 | 方便后續(xù)行處理 |
| 大文件(>1MB) | for循環(huán)遍歷文件對象(逐行讀?。?/td> | 內(nèi)存友好、效率高 |
| 精準分段讀取 | read(n) | 靈活控制讀取量 |
核心原則:優(yōu)先使用with語句,避免資源泄漏;大文件必用逐行讀取,避免內(nèi)存溢出。掌握這些方法,就能處理所有 txt 文件的讀取需求。
以上就是Python讀取TXT文件的全攻略的詳細內(nèi)容,更多關于Python讀取TXT文件的資料請關注腳本之家其它相關文章!
相關文章
Python的凈值數(shù)據(jù)接口調(diào)用示例分享
這篇文章主要介紹了Python的凈值數(shù)據(jù)接口調(diào)用示例分享的相關資料,需要的朋友可以參考下2016-03-03
Python+matplotlib實現(xiàn)循環(huán)作圖的方法詳解
這篇文章主要為大家介紹了Python如何利用matplotlib實現(xiàn)循環(huán)作圖的,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習學習2022-06-06
Python3網(wǎng)絡爬蟲中的requests高級用法詳解
本節(jié)我們再來了解下 Requests 的一些高級用法,如文件上傳,代理設置,Cookies 設置等等。感興趣的朋友跟隨小編一起看看吧2019-06-06
python GUI庫圖形界面開發(fā)之PyQt5控件QTableWidget詳細使用方法與屬性
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5控件QTableWidget詳細使用方法與屬性,需要的朋友可以參考下2020-02-02
python3使用libpcap庫進行抓包及數(shù)據(jù)處理的操作方法
這篇文章主要介紹了python3使用libpcap庫進行抓包及數(shù)據(jù)處理,需要的朋友可以參考下2022-10-10
從入門到精通解析Python Selenium如何模擬瀏覽器操作
Selenium是一款開源的自動化測試工具,核心優(yōu)勢在于能模擬真實用戶操作瀏覽器,下面小編就來和大家詳細講講Python Selenium如何模擬瀏覽器的相關操作吧2026-01-01

