国产日韩欧美一区二区三区综合,日本黄色免费在线,国产精品麻豆欧美日韩ww,色综合狠狠操

極客小將

您現(xiàn)在的位置是:首頁 » 原創(chuàng)課程 » Python

課程內(nèi)容

Python入門課程N(yùn)O67課 文件的讀寫高級(jí)操作

極客小將2020-09-01-
文件的讀寫緩沖區(qū):文件的讀寫緩沖區(qū)對(duì)應(yīng)的是內(nèi)存中的一塊緩沖區(qū):在對(duì)文件執(zhí)行寫操作時(shí),會(huì)先將數(shù)據(jù)寫到這個(gè)緩沖區(qū),緩沖區(qū)寫滿以后再刷新到磁盤。在對(duì)文件執(zhí)行讀操作時(shí),會(huì)先將文件的一部分?jǐn)?shù)據(jù)預(yù)讀到這塊內(nèi)存緩沖區(qū),然后再?gòu)倪@塊緩沖區(qū)里進(jìn)行讀取。在內(nèi)存中進(jìn)行讀寫遠(yuǎn)快于

文件的讀寫緩沖區(qū):

文件的讀寫緩沖區(qū)對(duì)應(yīng)的是內(nèi)存中的一塊緩沖區(qū):在對(duì)文件執(zhí)行寫操作時(shí),會(huì)先將數(shù)據(jù)寫到這個(gè)緩沖區(qū),緩沖區(qū)寫滿以后再刷新到磁盤。在對(duì)文件執(zhí)行讀操作時(shí),會(huì)先將文件的一部分?jǐn)?shù)據(jù)預(yù)讀到這塊內(nèi)存緩沖區(qū),然后再?gòu)倪@塊緩沖區(qū)里進(jìn)行讀取。在內(nèi)存中進(jìn)行讀寫遠(yuǎn)快于直接在磁盤中進(jìn)行讀寫,所以在寫入的時(shí)候,先寫到內(nèi)存緩沖區(qū),當(dāng)數(shù)據(jù)量大于內(nèi)存緩沖區(qū)的容量時(shí),再一次性刷新到磁盤。讀取也是一樣的道理,先將磁盤文件中的一批數(shù)據(jù)預(yù)讀到內(nèi)存里來,后續(xù)讀取的時(shí)候直接在內(nèi)存緩沖區(qū)里進(jìn)行讀操作,大大提高了讀取的性能。

可以通過執(zhí)行文件流對(duì)象flush方法手動(dòng)地刷新內(nèi)存緩沖區(qū)。

另外open方法中有一個(gè)buffering參數(shù),當(dāng)給buffering參數(shù)傳遞0時(shí),會(huì)關(guān)閉這個(gè)內(nèi)存緩沖區(qū),該操作只適用于二進(jìn)制模式。傳遞1時(shí)設(shè)置行緩沖模式,只能用于文本模式。所謂的行緩沖是指一行緩沖的大小,這里的一行以行尾的換行符來進(jìn)行標(biāo)識(shí)。傳遞的值大于1時(shí)表示設(shè)置固定的緩沖區(qū)大小。

文件的指針與定位:

file_stream.seek(offset, [from]):offset表示是偏移量,from表示從什么位置處開始進(jìn)行定位,from的值為0時(shí)表示從文件頭開始定位,為1時(shí)表示從當(dāng)前位置開始定位,為2時(shí)表示從文件尾開始定位。from的值默認(rèn)為0。如需從當(dāng)前位置進(jìn)行定位,必須以二進(jìn)制模式來打開文件。

可以把文件指針形象地理解為箭頭,一開始這個(gè)箭頭指向文件的首行,應(yīng)用程序讀取文件時(shí),從箭頭指向的位置處開始讀取。每讀完一行,箭頭就下移一行。

指定文件編碼:

在執(zhí)行open函數(shù)獲取文件流對(duì)象時(shí),可以通過encoding參數(shù)來指定文件讀寫時(shí)的編碼。只有當(dāng)文件自身編碼和代碼書寫編碼保持一致時(shí),才能正確的讀取文件內(nèi)容,否則將拋出異常。例如我們用編輯器打開hello.txt輸入極客小將四個(gè)字,之后保存為uft-8編碼格式。

如果我們改成以ascii編碼方式讀取,那么就會(huì)拋出錯(cuò)誤異常。

值得一提的是可以u(píng)tf-8編碼讀取ascii編碼的文件,因?yàn)閡tf-8字符集涵蓋了ascii字符集,所以使用utf-8編碼來讀取文件時(shí),能正確的編解碼,而不會(huì)拋出異常信息。

對(duì)文件讀寫進(jìn)行錯(cuò)誤處理:open方法中的errors參數(shù),用來控制出現(xiàn)編碼和解碼的錯(cuò)誤時(shí)該如何處理。errors參數(shù)只能用于文本模式。

舉例說明:

預(yù)約試聽課

已有385人預(yù)約都是免費(fèi)的,你也試試吧...

主站蜘蛛池模板: 井陉县| 澄江县| 松阳县| 高密市| 会东县| 大洼县| 曲水县| 大洼县| 龙游县| 柘城县| 吐鲁番市| 隆昌县| 彰化市| 华阴市| 大方县| 凌云县| 庆云县| 永和县| 三河市| 临漳县| 汕头市| 邓州市| 藁城市| 南丹县| 神池县| 义乌市| 和政县| 丰宁| 介休市| 沅江市| 巫山县| 闵行区| 晋州市| 峨边| 额敏县| 亚东县| 霍州市| 巴塘县| 山东| 沙洋县| 鄯善县|