在python3中引入了位元組串的概念,與str不同,位元組串以位元組序列值表達資料,更方便用來處理二程序資料。因此在python3中位元組串是常見的二進位制資料展現方式。
對檔案實現讀寫的基本操作步驟為:開啟檔案,讀寫檔案,關閉檔案
開啟檔案
file_object =
open
(file_name, access_mode=
'r', buffering=-1
)
功能:開啟乙個檔案,返回乙個檔案物件。
引數:file_name 檔名;
access_mode 開啟檔案的方式,如果不寫預設為『r』
操作access_modes_mode
開啟檔案的方式,如果不寫預設為『r』
r以讀方式開啟 檔案必須存在
w以寫方式開啟,檔案不存在則建立,存在清空原有內容
a以追加模式開啟
rb以二進位制讀模式開啟 同r
wb以二進位制寫模式開啟 同w
ab以二進位制追加模式開啟 同a
rb+以二進位制讀寫模式開啟 同r+
wb+以二進位制讀寫模式開啟 同w+
ab+以二進位制讀寫模式開啟 同a+
buffering 1表示有行緩衝,預設則表示使用系統預設提供的緩衝機制。
返回值:成功返回檔案操作物件。
"""
open函式例項
"""# f = open("../file", "r")
# f = open("../file", "w")
f =open
("../file"
,"a"
)print
(f)f.close(
)
讀取檔案
read([size])
功能: 來直接讀取檔案中字元。
引數: 如果沒有給定size引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾,給定size
最多讀取給定數目個字元(位元組)。
返回值: 返回讀取到的內容
"""
read函式例項
"""f =
open
("file"
,"r"
)# while true:
# date = f.read(4)
# if not date:
# break
# print(date)
date = f.readline(
)date.split(
)print
(date)
# date = f.readline(10)
# print(date)
# date=f.readlines(6)
# print(date)
f.close(
)
檔案物件本身也是乙個可迭代物件,在for迴圈中可以迭代檔案的每一行。
for line in f:
print
(line)
寫入檔案
write(string)
功能: 把文字資料或二進位制資料塊的字串寫入到檔案中去
引數:要寫入的內容
返回值:寫入的字元個數
f =
open
("file"
,"a"
)f.write(
"s\n"
)a = f.write(
"s")
print
(a)f.close(
)
關閉檔案
開啟乙個檔案後我們就可以通過檔案物件對檔案進行操作了,當操作結束後使用close()關閉這個物件可以防止一些誤操作,也可以節省資源。
file_object.close(
)
with操作
python中的with語句使用於對資源進行訪問的場合,保證不管處理過程中是否發生錯誤或者異常都會執行規定的「清理」操作,釋放被訪問的資源,比如有檔案讀寫後自動關閉、執行緒中鎖的自動獲取和釋放等。
with語句的語法格式如下:
with context_expression [
as obj]
:with
-body
通過with方法可以不用close(),因為with生成的物件在語句塊結束後會自動處理,所以也就不需要close了,但是這個檔案物件只能在with語句塊內使用。
with
open
('file'
,'r+'
)as f:
f.read(
)
注意
加b的開啟方式讀寫要求必須都是位元組串
無論什麼檔案都可以使用二進位制方式開啟,但是二進位制檔案使用文字方式開啟讀寫會出
錯重新整理緩衝區
緩衝:系統自動的在記憶體中為每乙個正在使用的檔案開闢乙個緩衝區,從記憶體向磁碟輸出資料必須先送到記憶體緩衝區,再由緩衝區送到磁碟中去。從磁碟中讀資料,則一次從磁碟檔案將一批資料讀入到記憶體緩衝區中,然後再從緩衝區將資料送到程式的資料區。
重新整理緩衝區條件:
緩衝區被寫滿
程式執行結束或者檔案物件被關閉
行緩衝遇到換行
程式中呼叫flush()函式
flush()
該函式呼叫後會進行一次磁碟互動,將緩衝區中的內容寫入到磁碟。
# f = open('file','w')
# f = open("file",'w',1) # 1 行緩衝,遇到\n會重新整理緩衝區
f =open
("file"
,'wb',10
)# >1 指明緩衝區大小 (二進位制方式)
while
true
: data =
input
(">>")if
not data:
break
f.write(b"hello world"
)# f.flush() # 重新整理緩衝區
f.close(
)
檔案偏移量
定義開啟乙個檔案進行操作時系統會自動生成乙個記錄,記錄中描述了我們對檔案的一系列操作,其中包括每次操作到的檔案位置。檔案的讀寫操作都是從這個位置開始進行的。
基本操作
tell()
功能:獲取檔案偏移量大小
seek(offset[,whence])
功能:移動檔案偏移量位置
引數:offset 代表相對於某個位置移動的位元組數。負數表示向前移動,正數表示向後移動。
whence是基準位置的預設值為 0,代表從檔案開頭算起,1代表從當前位置算起,2 代表從檔案末尾算起。
"""
空洞檔案
"""f =
open
("皮卡丘"
,'wb'
)f.write(b'begin'
)f.seek(
1024,2
)f.write(b'end'
)f.close(
)"""
seek.py 檔案偏移量展示
open 檔案偏移量初始化
r w 開啟檔案偏移量在開頭
a 開啟檔案偏移量在結尾
"""f =
open
('file'
,'wb+'
)f.write(
"春天來了"
.encode())
f.flush(
)print
("當前檔案偏移量位置:"
,f.tell())
f.seek(-6
,2)# 以開頭為基準,向後移動0 位元組
data = f.read(
)print
(data.decode())
f.close(
)
檔案描述符
定義系統中每乙個io操作都會分配乙個整數作為編號,該整數即這個io操作的檔案描述符。
獲取檔案描述符
fileno()
通過io物件獲取對應的檔案描述符
常用檔案操作函式
獲取檔案大小
os.path.getsize(file)
檢視檔案列表
os.listdir(dir)
檢視檔案是否存在
os.path.exists(file)
判斷檔案型別
os.path.isfile(file)
刪除檔案
os.remove(file)
Python複習筆記 檔案
open filename,mode mode 唯讀 r 只寫 w 追加 a 讀寫 r 二進位制讀 rb,wb,ab,r b read 讀全部檔案 read size 讀size個位元組 readline 讀開始一行 readlines 讀所有行到乙個list write string 寫入字串,非...
Python學習筆記 檔案
3 檔案 目錄的常用管理操作 計算機的檔案,就是儲存在某種 長期儲存裝置 上的一段資料 在計算機中,檔案是以二進位制的方式儲存在磁碟上的 在 計算機 中要操作檔案的套路非常固定,一共包含三個步驟 1.開啟檔案 2.讀 寫檔案 3.關閉檔案 python中操作檔案有 乙個函式和三個方法 open 函式...
python筆記 檔案操作
檔案操作 好記性不如爛筆頭,學習從摘抄開始!1.純文字檔案的讀和寫 r read w writerb read binary wb write binary3.追加模式 1.open filepath,mode 1 第乙個引數是檔案的路徑 2 第乙個引數是開啟的模式,讀取模式 mode r 或 mo...