Python基礎(5) 檔案操作

2022-09-07 08:15:09 字數 3070 閱讀 8418

一、檔案處理流程

開啟檔案,得到檔案控制代碼並賦值給乙個變數

通過控制代碼對檔案進行操作

關閉檔案

二、檔案開啟模式

開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,日後通過此檔案控制代碼對該檔案操作。

開啟檔案的模式有:

"+" 表示可以同時讀寫某個檔案

"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 方...