1.打開文件
1.open()
open()常用參數:
參數名稱 | 意義 |
---|---|
file | 位置參數,要打開文件的路徑 |
mode | 關鍵字參數,打開文件的模式 |
encoding | 關鍵字參數,編碼格式 |
參數詳解:
1.file
file代表我們要打開的文件,可以使用絕對路徑或相對路徑
(1)當我們要打開的文件與程序不在同一個級文件夾下,則使用絕對路徑:
在test.py文件中打開a\a.txt,代碼如下(僞代碼):
open(r"D:\a\a.txt")
或
open("D:/a/a.txt")
注意事項:
1.爲了避免錯誤,在路徑前加r,因爲\在python中還有轉義的意思,r是rawstring,會顯示原生的字符串
2.將\換爲/,系統默認\表示文件目錄,但在此我們也可以用/
3.相對路徑是文件完整的路徑,相對路徑定位文件準確,但可能前綴過長讓代碼看起來冗餘
(2)當我們要打開的文件與程序所在文件在同一級文件夾下,使用相對路徑
在test.py中打開b\a.txt和b\c\e.txt,代碼如下(僞代碼):
open("a.txt")
open(r"c\e.txt")
注意事項:
1.要打開的文件一定與程序在同一級文件夾下,如果不在就會報錯
2.mode
打開文件有兩種模式,t(文本模式)和b(字節),必須要和操作文件模式連用,默認模式是rt
t模式的特點:
- 讀寫都是以str爲單位
- 讀寫的都是文本文件,操作文本文件時很方便
- 要指定encoding
b模式的特點
- 讀寫都是以bytes爲單位
- 可以讀寫任何文件,更通用
- 不指定encoding
3.encoding
文件中的數據本質上是存在硬盤,在硬盤中是某種編碼格式的二進制數據,那我們讀出來的也是二進制數據,所以要進行解碼,指定了encoding後,python就會自動幫我們按照encoding參數進行解碼,如果不指定,就會按照我們操作系統的編碼類型進行解碼。
看一個錯誤示範,代碼如下:
f = open("a.txt",mode="rt",)
ret = f.read()
print(ret)
運行結果:
我的電腦是windows操作系統,默認編碼格式是gbk,而這個a.txt文件的編碼格式設置成utf-8,這樣的話肯定無法解碼
我們加上encoding,再試一試:
f = open("a.txt",mode="rt",encoding="UTF-8")
ret = f.read()
pritn(ret)
運行結果如下:
注意:encoding一定要和文件的編碼格式相同
2.關閉文件
操作系統能打開的文件個數是一定的的,而且如果只是打開文件操作完後卻不關閉會白白浪費我們的內存,所以一定要記得關閉文件。
1.手動關閉
f = open("a.txt",mode="rt",encoding="UTF-8")
ret = f.read()
pritn(ret)
f.close() #關閉文件
2.with(自動關閉)
with更加人性化一點,with語句結束後會幫我們自動關閉文件
with open("a.txt",mode="rt",encoding="UTF-8") as f:
ret = f.read()
pritn(ret)
來驗證一下with的自動關閉:
with open("a.txt",mode="rt",encoding="UTF-8") as f:
ret = f.read()
pritn(ret)
f.read()
結果如下: