文字檔案和二進位制檔案
檔案可以看成是儲存在輔助儲存器上的資料序列,可以包含任何資料內容。檔案包括兩種形式:文字檔案和二進位制檔案。文字檔案一般由特定編碼的字元組成,二進位制檔案由位元0和位元1組成,沒有統一的字元編碼,資料的組織形式與檔案用途有關。
文字檔案和二進位制檔案的根本區別是是否有統一的字元編碼,二進位制檔案由於沒有統一的字元編碼只能被當作位元組流,不能被看做字串。
但是無論是二進位制檔案還是文字檔案都可以用「文字檔案方式」和「二進位制檔案方式」開啟。
首先我們建立了乙個名為"pydemo1"的文字檔案,陷在以不同方式開啟它:
demo1=
open
("d:\python\pydemo1.txt"
,'rt'
,encoding=
'utf-8'
)print
("檔案的文字形式開啟方式內容是:{}"
.format
(demo1.readline())
)demo1.close(
)demo2=
open
("d:\python\pydemo1.txt"
,'rb'
)print
("檔案的二進位制開啟方式內容是:{}"
.format
(demo2.readline())
)demo2.close(
)
結果是:
這個例子告訴我們無論是二進位制檔案還是文字檔案都可以用二進位制方式和文字檔案方式開啟。
什麼?怎樣開啟檔案?用open函式呀!什麼?open函式的引數都是什麼意思呀?別急嘛,這不就來了嗎(•̅灬•̅ )
檔案的開啟和關閉
python對於檔案都採用預設的操作步驟:開啟——操作——關閉,對檔案進行操作之後一定要關閉它,關閉檔案將對檔案釋放控制權使檔案恢復儲存狀態,此時另乙個程序可以操作這個檔案。
python通過open()函式開啟乙個檔案,語法如下:
變數名=open(檔名,開啟模式)
open函式
其中open函式有多個引數,其完整引數形式如下:
open(file, mode=『r』, buffering=-1, encoding=none, errors=none, newline=none, closefd=true,opener=none)
file:表示檔案路徑
mode: 檔案開啟模式。
buffering: 設定緩衝(不影響結果)。
encoding: 解碼或編碼檔案的編碼的名稱,僅適用於文字檔案。
errors: 指明編碼和解碼錯誤時怎麼樣處理,適用於文字模式。
newline: 文字模式之下,控制一行的結束字元。
closefd: 傳入的file引數型別。
opener: 自定義開啟檔案方式(使用預設none)
別看open有很多引數,其實我們最常用的引數只有file,mode和encoding
返回的資料以什麼編碼形式,常用的就是utf-8和gbk,適用於文字檔案
④buffering:
用來表示緩衝區存檔的方式。緩衝區是記憶體上的乙個空間,當達到緩衝區滿了之後,資料才會刷到磁碟。
buffering為-1時,使用預設大小的緩衝區。
buffering為0時,關閉緩衝區,直接讀寫,僅在二進位制模式下有效。
buffering為1時,表示在文字模式下使用行緩衝區方式。即見到換行符就重新整理存檔。
buffering為大於1時,表示緩衝區用於指定緩衝區的大小。⑤⑥⑦
⑤errors:
是用來指定編碼和解碼錯誤時處理方法。適用於 t (文字模式)。
errors=strict,編碼出錯則丟擲異常valueerror。同等於預設errors=none;
errors=ignore,忽略錯誤。
errors=replace,替代模式,比如使用「?』來替換出錯的地方。
unicodedecodeerror: 'gbk' codec can't decode byte 0x92 in position 0: incomplete multibyte sequence
demo1=
open
("d:\python\pydemo1.txt"
,'rt'
)print
("檔案的文字形式開啟方式內容是:{}"
.format
(demo1.readline())
)demo1.close(
)demo2=
open
("d:\python\pydemo1.txt"
,'rb'
)print
("檔案的二進位制開啟方式內容是:{}"
.format
(demo2.readline())
)demo2.close(
)
設定完encoding引數之後
demo1=
open
("d:\python\pydemo1.txt"
,'rt'
,encoding=
'utf-8'
)print
("檔案的文字形式開啟方式內容是:{}"
.format
(demo1.readline())
)demo1.close(
)demo2=
open
("d:\python\pydemo1.txt"
,'rb'
)print
("檔案的二進位制開啟方式內容是:{}"
.format
(demo2.readline())
)demo2.close(
)
結果正確啦
隨後好奇去試了一下errors引數
demo1=
open
("d:\python\pydemo1.txt"
,'rt'
,errors=
"ignore"
)print
("檔案的文字形式開啟方式內容是:{}"
.format
(demo1.readline())
)demo1.close(
)demo2=
open
("d:\python\pydemo1.txt"
,'rb'
)print
("檔案的二進位制開啟方式內容是:{}"
.format
(demo2.readline())
)demo2.close(
)
結果是:
由於使用了errors選擇忽略錯誤,因此程式就是一堆亂碼了(*ˉ﹃ˉ)
close()函式
現在我們已經成功開啟了檔案了,操作完成後需要把檔案關閉,可以讓其他程式繼續使用檔案,關閉檔案只需使用close函式即可,沒有開啟的花裡胡哨,也沒有開啟可能會面臨的種種錯誤,簡單粗暴,一關就好,面對close函式的種種優點你還有什麼理由不去關閉呢?
變數名.close()
即可關閉檔案ლ(´ڡ`ლ)
你今天學廢了嗎,下次再見咯
(`・ω・´)
python 檔案的開啟與關閉
檔案的開啟與關閉 想一想 如果想用word編寫乙份簡歷,應該有哪些流程呢?開啟word軟體,新建乙個word檔案 寫入個人簡歷資訊 儲存檔案 關閉word軟體 同樣,在操作檔案的整體過程與使用word編寫乙份簡歷的過程是很相似的 io操作 開啟檔案,或者新建立乙個檔案 讀 寫資料 關閉檔案 1 開啟...
Python之檔案的開啟關閉
1.建立磁碟 上的檔案與程式中的物件相關聯 2.通過相關的檔案物件獲得 1 讀取 2 寫入 3 其他 追加 計算等 1 切斷檔案與程式的聯絡 2 寫入磁碟,並釋放檔案緩衝區 1 open 2 open 磁碟檔名 3開啟模式 1 例如,開啟乙個名為7.1 txt檔案 2 textfile open 7...
python之檔案的開啟與關閉
在python系統中,檔案是乙個物件型別,類似字典,元組等其他型別。python系統的檔案概念不侷限於磁碟上的檔案,還可以是抽象的,具有檔案型介面的類檔案。摘自 python程式設計教程 python提供open 函式建立檔案物件,並開啟要讀寫的檔案open 開啟格式 open buffer 其中,...