一、檔案處理流程
開啟檔案,得到檔案控制代碼並賦值給乙個變數
通過控制代碼對檔案進行操作
關閉檔案
二、檔案開啟模式
開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,日後通過此檔案控制代碼對該檔案操作。
開啟檔案的模式有:
"+" 表示可以同時讀寫某個檔案
"b"表示以位元組的方式操作
注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼
#r模式,預設模式,文不存在則報錯1) f=open('a.txt',encoding='utf-8')
print('first-read:',f.read()) #讀檔案所有內容
print('seconde-read: ',f.read()) #游標在最後一行,第二個列印讀不出內容
2) f=open('a.txt',encoding='utf-8')
print(f.readline(),end='') #讀檔案一行
print(f.readline(),end='')
print(f.readlines()) #讀出檔案所有行
f.close() #關閉檔案
#w模式,文不存在則建立,檔案存在則覆蓋f=open('a.txt','w',encoding='utf-8')
f.write('1111111\n22222\n3333\n') #\n是換行
#也可以這樣寫
f.writelines(['111hhh\n','222aa2\n','3333\n'])
f.close()
#a模式,文不存在則建立,檔案存在不會覆蓋,寫內容是追加的方式寫f=open('a.txt','a',encoding='utf-8')
f.write('\n444444\n')
f.write('5555555\n')
f.close()
#其他方法# f=open('a.txt','w',encoding='utf-8')
# f.write('asdfasdf')
# f.flush() #把記憶體資料刷到硬碟
# f.close()
# print(f.closed) #判斷檔案是否關閉
# f.readlines()
三、檔案內建函式flush
flush原理:
檔案操作是通過軟體將檔案從硬碟讀到記憶體
寫入檔案的操作也都是存入記憶體緩衝區buffer(記憶體速度快於硬碟,如果寫入檔案的資料都從記憶體刷到硬碟,記憶體與硬碟的速度延遲會被無限放大,效率變低,所以要刷到硬碟的資料我們統一往記憶體的一小塊空間即buffer中放,一段時間後作業系統會將buffer中資料一次性刷到硬碟)
flush即,強制將寫入的資料刷到硬碟
四、open函式詳解
1. open()語法
open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=true]]]]]])open函式有很多的引數,常用的是file,mode和encoding
file檔案位置,需要加引號
mode檔案開啟模式,見下面3
buffering的可取值有0,1,>1三個,0代表buffer關閉(只適用於二進位制模式),1代表line buffer(只適用於文字模式),>1表示初始化的buffer大小;
encoding表示的是返回的資料採用何種編碼,一般採用utf8或者gbk;
errors的取值一般有strict,ignore,當取strict的時候,字元編碼出現問題的時候,會報錯,當取ignore的時候,編碼出現問題,程式會忽略而過,繼續執行下面的程式。
newline可以取的值有none, \n, \r, 」, 『\r\n',用於區分換行符,但是這個引數只對文字模式有效;
closefd的取值,是與傳入的檔案引數有關,預設情況下為true,傳入的file引數為檔案的檔名,取值為false的時候,
file只能是檔案描述符,什麼是檔案描述符,就是乙個非負整數,在unix核心的系統中,開啟乙個檔案,便會返回乙個檔案描述符。
2. python中file()與open()區別
兩者都能夠開啟檔案,對檔案進行操作,也具有相似的用法和引數,但是,這兩種檔案開啟方式有本質的區別,file為檔案類,用file()來開啟檔案,相當於這是在構造檔案類,而用open()開啟檔案,是用python的內建函式來操作,建議使用open
五、上下文管理
#上下文管理with# read_f=open('a.txt','r',encoding='utf-8')
# write_f=open('.a.txt.swp','w',encoding='utf-8')
#上面兩句可以縮寫成下面一句
with open('a.txt','r',encoding='utf-8') as read_f,\
open('.a.txt.swp','w',encoding='utf-8') as write_f:
for line in read_f:
if 'alex' in line:
line=line.replace('alex','alexsb')
write_f.write(line)
os.remove('a.txt')
os.rename('.a.txt.swp','a.txt')
Python基礎(18)檔案操作
在計算機中,檔案是以 二進位制 的方式儲存在磁碟上的 文字檔案和二進位制檔案 1.文字檔案 2.二進位制檔案 在計算機中要操作檔案的套路非常固定,一共包含三個步驟 開啟檔案2.讀 寫檔案 讀 將檔案內容讀入記憶體 read 寫 將記憶體內容寫入檔案 write 關閉檔案 序號函式 方法 說明01 o...
python基礎 9 檔案操作
開啟檔案 獲取檔案物件 關閉檔案 1 格式 f open 路徑 檔名 模式 預設為r模式唯讀 read first line f.read line 讀取第一行 print first line f.close 關閉檔案 開啟檔案的模式有 r 唯讀模式 預設模式,檔案必須存在,不存在則丟擲異常 w,...
Python基礎 八 檔案操作
在工作中常常會涉及到檔案操作,例如日誌記錄,生成測試報告等。python常用的檔案操作主要包括開啟 讀取,寫入 關閉。一 開啟檔案 使用open file,mode,encoding 方法,其中 例如 f open file test.txt mode r encoding utf 8 open 方...