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

