Python open() 函數完整指南
更新日期: 2025 年 2 月 9 日
在 Python 中,處理文件是常見的操作,例如讀取日誌、寫入數據或修改設定檔。
而 open()
函數正是 Python 提供的內建方法,用來開啟文件並進行讀寫操作。
本篇文章將詳細介紹 open()
函數的用法,包括其語法、不同模式、錯誤處理方式,並補充 with
與 as
關鍵字的使用,讓你更安全、高效地操作文件。
open()
函數的基本介紹
語法
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
其中:
file
:必填,表示要開啟的文件名稱(可以是相對或絕對路徑)。mode
:文件開啟模式,預設為'r'
(只讀)。buffering
:緩衝區設定,0
為無緩衝,1
為行緩衝,-1
或>1
為系統預設緩衝大小。encoding
:字符編碼,讀取文本文件時常用'utf-8'
。errors
:錯誤處理方式,如'ignore'
(忽略錯誤)或'replace'
(用替代字符)。newline
:控制換行字符的處理方式,適用於文本模式。closefd
:是否在關閉open()
時一併關閉文件描述符,適用於開啟文件描述符時。opener
:自定義文件打開函數,較少用到。
文件模式 (mode
)
不同的 mode
影響文件的讀寫方式,以下是常見的模式:
模式 | 描述 |
---|---|
'r' | 以只讀模式開啟(默認),文件不存在則報錯 |
'w' | 以寫入模式開啟,若文件存在則清空內容,否則新建 |
'a' | 以追加模式開啟,寫入內容會添加到文件末尾 |
'x' | 以獨占創建模式開啟,文件存在時會報錯 |
'b' | 二進制模式,可與其他模式搭配(如 'rb') |
't' | 文本模式,可與其他模式搭配(如 'rt',默認) |
'+' | 讀寫模式,可與 'r'、'w'、'a' 搭配(如 'r+') |
例如:
# 以只讀模式打開文件
file = open("example.txt", "r")
# 以寫入模式打開(會清空原內容)
file = open("example.txt", "w")
# 以追加模式打開(不清空原內容)
file = open("example.txt", "a")
讀取文件內容
Python 提供多種方法來讀取文件內容:
read()
讀取整個文件
file = open("example.txt", "r", encoding="utf-8")
content = file.read()
print(content)
file.close()
readline()
讀取單行
file = open("example.txt", "r", encoding="utf-8")
line = file.readline()
print(line)
file.close()
readlines()
讀取所有行並以列表返回
file = open("example.txt", "r", encoding="utf-8")
lines = file.readlines()
print(lines)
file.close()
寫入文件
Python 也提供不同方法來寫入內容:
write()
寫入字符串
file = open("example.txt", "w", encoding="utf-8")
file.write("Hello, Python!\n")
file.close()
writelines()
寫入多行
lines = ["第一行\n", "第二行\n", "第三行\n"]
file = open("example.txt", "w", encoding="utf-8")
file.writelines(lines)
file.close()
使用 with
和 as
關鍵字
with
的優勢
在使用 open()
時,若忘記 close()
可能會導致內存洩漏或文件鎖定。
而 with
關鍵字可以確保文件在執行完後自動關閉,即便發生錯誤也不影響。
with
與 open()
搭配使用
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content) # 文件會在 with 結束後自動關閉
相當於手動 close()
的寫法:
file = open("example.txt", "r", encoding="utf-8")
try:
content = file.read()
print(content)
finally:
file.close()
as
關鍵字的作用
在 with open(...) as file:
這種寫法中,as
關鍵字用來給 open()
返回的文件對象起一個變數名,以便後續操作該對象。
with open("example.txt", "w", encoding="utf-8") as f:
f.write("這是一條新數據!")
這裡的 as f
代表:
open("example.txt", "w", encoding="utf-8")
返回的文件對象被賦值給f
。- 之後可以使用
f.write()
來對該文件進行操作。
換句話說,as
只是提供了一個簡潔的變數名稱,讓我們可以更方便地引用文件對象。
這種寫法的優勢是:
✅ 自動管理資源(避免忘記關閉文件)
✅ 代碼更簡潔、可讀性更強
✅ 防止異常導致文件未正確關閉
錯誤處理
開啟文件時,可能會遇到文件不存在或無法訪問的錯誤,可以使用 try-except
來處理:
try:
with open("not_exist.txt", "r", encoding="utf-8") as file:
content = file.read()
except FileNotFoundError:
print("文件不存在!")
except PermissionError:
print("沒有權限讀取該文件!")
except Exception as e:
print(f"發生錯誤:{e}")
小結
open()
是 Python 內建的文件操作函數,可用來讀取或寫入文件。mode
參數控制文件的讀寫方式(如'r'
、'w'
、'a'
等)。with
關鍵字確保文件能夠自動關閉,避免手動close()
的風險。as
關鍵字用來為open()
返回的文件對象取別名,讓代碼更簡潔。- 可以使用
try-except
來處理文件相關的錯誤,確保代碼更健壯。
希望這篇指南能幫助你掌握 Python 的文件操作,提高開發效率!