亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python使用open函數(shù)的buffering設(shè)置文件緩沖方式

 更新時間:2024年02月10日 10:03:29   作者:AllardZhao  
這篇文章主要介紹了Python使用open函數(shù)的buffering設(shè)置文件緩沖方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

如何設(shè)置文件的緩沖

實際案例

將文件內(nèi)容寫到硬件設(shè)備時,使用系統(tǒng)調(diào)用,這類I/O操作的時間很長。

為了減少I/O操作的次數(shù),文件通常使用緩沖區(qū)。

(有足夠多的數(shù)據(jù)才進行系統(tǒng)調(diào)用)文件的緩沖行為,分為全緩沖、行緩沖、無緩沖。

如何設(shè)置python中文件對象的緩沖行為?

python文件對象默認(rèn)的緩沖行為4個字節(jié)(4096)

解決方案

  • 全緩沖:open函數(shù)的buffering設(shè)置為大于1的整數(shù)n,n為緩沖區(qū)大小。
  • 行緩沖:open函數(shù)的buffering設(shè)置為1 。
  • 無緩沖:pen函數(shù)的buffering設(shè)置為0。

注意:

都是在python交互模式下進行的操作,如果是用腳本,腳本運行完關(guān)閉文件對象,緩沖區(qū)內(nèi)容就會寫到磁盤中,這樣就觀察不了緩沖區(qū)不同大小的行為了。

文件緩沖介紹?

對于磁盤這類的塊設(shè)備,它的讀寫不是一個字節(jié)一個字節(jié)完成的,而是按塊每次讀寫一個塊,假設(shè)一個塊的大小是4096個字節(jié),那就意味著寫入一個字節(jié)和寫入4096個字節(jié)都需要一次I/O操作,它們的用時是相同的。

在這種情況為了提高效率就要減少I/O操作的次數(shù),使用的手段就是為文件設(shè)立一個緩沖區(qū)。

當(dāng)需要寫入的字節(jié)數(shù)不足一個塊設(shè)備大小的時候,那么都放入緩沖區(qū)當(dāng)中,湊夠一個塊的大小才調(diào)用一次系統(tǒng)調(diào)用。

  • 全緩沖就是緩沖區(qū)有一定大小滿足那個數(shù)量就進行一次系統(tǒng)調(diào)用;
  • 行緩沖就是碰到一個換行符就進行一次輸出也就是一次系統(tǒng)調(diào)用;
  • 無緩沖就是不希望有緩沖的實時寫入到文件,如串口設(shè)備,需要及時的發(fā)送到串口上去。

代碼演示

f = open('open.txt', 'wb')
'''
使用tail -f open.txt,實時查看文件內(nèi)容,
python交互模式下,輸入以下內(nèi)容,查看寫入4096個字節(jié)前后輸出變化。
'''
f.write(b'abc')
f.write(b'+' * 4093)
f.write(b'-')
'''
普通文件默認(rèn)的緩沖行為,緩沖區(qū)的大小4096,是根據(jù)平臺和
塊設(shè)備自身的屬性相關(guān)。在某些情況下想改變緩沖區(qū)的大小應(yīng)該怎么做?
通過open函數(shù)buffering參數(shù)設(shè)置緩沖大小。
'''
# 設(shè)置全緩沖區(qū)的大小為2048
f2 = open('demo2.txt', 'wb', buffering=2048)
f2.write(b'+' * 1024)
f2.write(b'+' * 1023)
f2.write(b'-' * 2)
 
# 設(shè)置行緩沖,buffering為1
f3 = open('demo3.txt', 'wb', buffering=1)
f.write(b'abc')
f.write(b'123')
f.write(b'\n')
 
# 無緩沖,buffering為0
f4 = open('demo4.txt', 'wb', buffering=0)
f4.write(b'a')
f4.write(b'1234')

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python開發(fā)一個PDF文本提取工具

    使用Python開發(fā)一個PDF文本提取工具

    在日常工作中,我們經(jīng)常需要從PDF文檔中提取文本內(nèi)容,雖然市面上有不少相關(guān)工具,但它們要么功能過于復(fù)雜,要么使用不夠方便,本文將介紹如何使用Python開發(fā)一個簡單實用的PDF文本提取工具,需要的朋友可以參考下
    2025-02-02
  • 一篇文章教會你PYcharm的用法

    一篇文章教會你PYcharm的用法

    這篇文章主要介紹了Pycharm新手使用教程(圖文詳解),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • python元類編程的基本使用

    python元類編程的基本使用

    本文主要介紹了python元類編程的基本使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳解python算法之冒泡排序

    詳解python算法之冒泡排序

    這篇文章主要介紹了詳解python算法之冒泡排序,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • PyQt5基本控件使用之消息彈出、用戶輸入、文件對話框的使用方法

    PyQt5基本控件使用之消息彈出、用戶輸入、文件對話框的使用方法

    本文主要介紹PyQt界面實現(xiàn)中常用的消息彈出對話框、提供用戶輸入的輸入框、打開文件獲取文件/目錄路徑的文件對話框。 本文主要針對這三種控件的主要場景進行介紹。感興趣的朋友跟隨小編一起看看吧
    2019-08-08
  • Windows下安裝python MySQLdb遇到的問題及解決方法

    Windows下安裝python MySQLdb遇到的問題及解決方法

    這篇文章主要介紹了Windows下安裝python MySQLdb遇到的問題及解決方法,需要的朋友可以參考下
    2017-03-03
  • python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說明

    python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說明

    這篇文章主要介紹了python print()函數(shù)的end參數(shù)和sep參數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python實現(xiàn)對比兩個Excel數(shù)據(jù)內(nèi)容并標(biāo)記出不同

    Python實現(xiàn)對比兩個Excel數(shù)據(jù)內(nèi)容并標(biāo)記出不同

    日常工作中需要對比兩個Excel工作表中的數(shù)據(jù)差異是很不方便的,使用python來做就比較簡單了!本文為大家介紹了python實現(xiàn)對比兩個Excel的數(shù)據(jù)內(nèi)容并標(biāo)記出不同數(shù)據(jù)的示例代碼,需要的可以參考一下
    2022-12-12
  • Python圖像運算之圖像灰度非線性變換詳解

    Python圖像運算之圖像灰度非線性變換詳解

    這篇文章將詳細講解圖像灰度非線性變換。圖像灰度非線性變換主要包括對數(shù)變換、冪次變換、指數(shù)變換、分段函數(shù)變換,通過非線性關(guān)系對圖像進行灰度處理,本文主要講解三種常見類型的灰度非線性變換,感興趣的可以了解一下
    2022-03-03
  • 基于Python實現(xiàn)主機遠程控制

    基于Python實現(xiàn)主機遠程控制

    這篇文章主要介紹了基于Python實現(xiàn)主機遠程控制,本文為?HITwh?網(wǎng)絡(luò)空間安全專業(yè)網(wǎng)絡(luò)空間安全設(shè)計與實踐選題,主要實現(xiàn)了遠程監(jiān)控局域網(wǎng)內(nèi)的主機桌面與網(wǎng)絡(luò)情況、簡單鍵鼠控制、遠程斷網(wǎng)(ARP?攻擊)、數(shù)據(jù)加密傳輸?shù)裙δ?,下面來看看具體實現(xiàn)過程吧
    2022-01-01

最新評論