檔案操作的步驟:
開啟檔案 -> 操作檔案 -> 關閉檔案
切記:最後要關閉檔案(否則可能會有意想不到的結果)
開啟檔案
檔案控制程式碼 = open('檔案路徑', '模式')
指定檔案編碼
檔案控制程式碼= open('檔案路徑','模式',encoding='utf-8')
為了防止忘記關閉檔案,可以使用上下文管理器來開啟檔案
with open('檔案路徑','模式') as 檔案控制程式碼:
開啟檔案的模式有:
r,只讀模式(預設)。
w,只寫模式。【不可讀;不存在則建立;存在則刪除內容;】
a,追加模式。【可讀; 不存在則建立;存在則只追加內容;】
r+,可讀寫檔案。【可讀;可寫;可追加】
w+,寫讀
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
rU
r+U
"b"表示處理二進位制檔案(如:FTP傳送上傳ISO映象檔案,linux可忽略,windows處理二進位制檔案時需標註)
rb
wb
ab
關閉檔案
檔案控制程式碼.close()
操作檔案:
detach
#佔位
fileno(返回檔案描述符,用於底層作業系統的 I/O 操作)
fid = 檔案控制程式碼.fileno()
print(fid)
flush(重新整理緩衝區,將緩衝區中的資料立刻寫入檔案)
檔案控制程式碼.flush()
isatty(判斷檔案是否連線到一個終端裝置,返回布林值)
檔案控制程式碼.isatty()
read(從檔案中讀取指定的字元數,預設讀取全部)
str = 檔案控制程式碼.read() #讀取整個檔案
str1 = 檔案控制程式碼.read(10) #讀取檔案前10個字元
readable(判斷檔案是否可讀,返回布林值)
檔案控制程式碼.readable()
readline(每次最多讀取一行資料,每行的最後包含換行符'\n')
print(檔案控制程式碼.readline()) #讀取第一行資料
print(檔案控制程式碼.readline(3)) #讀取第二行前3個字元
print(檔案控制程式碼.readline()) #讀取第二行剩餘字元
print(檔案控制程式碼.readline()) #讀取第三行
seek(移動檔案讀取的指標,如果檔案中包含中文,移動指標必須是3的倍數,不然會報錯,因為一箇中文字元等於3個位元組)
檔案控制程式碼.seek(6)
seekable(判斷檔案指標是否可用,返回布林值)
檔案控制程式碼.seekable()
tell(獲取指標位置)
檔案控制程式碼.tell()
truncate(截斷,把指標後面的內容刪除,並寫入檔案,要在可寫模式下操作)
f = open('text.txt','r+',encoding='utf-8')
f.seek(9) #把指標移動到第9個位元組後面(即第3箇中文後面)
f.truncate() #把第3箇中文後面的字元刪除,並寫入檔案
f.close()
writable(判斷檔案是否可寫,返回布林值)
檔案控制程式碼.writable()
write(把字串寫入檔案,並返回字元數)
檔案控制程式碼.write('字串')