欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

實(shí)際案例

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

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

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

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

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

解決方案

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

注意:

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

文件緩沖介紹?

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

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

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

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

代碼演示

f = open('open.txt', 'wb')
'''
使用tail -f open.txt,實(shí)時(shí)查看文件內(nèi)容,
python交互模式下,輸入以下內(nèi)容,查看寫(xiě)入4096個(gè)字節(jié)前后輸出變化。
'''
f.write(b'abc')
f.write(b'+' * 4093)
f.write(b'-')
'''
普通文件默認(rèn)的緩沖行為,緩沖區(qū)的大小4096,是根據(jù)平臺(tái)和
塊設(shè)備自身的屬性相關(guān)。在某些情況下想改變緩沖區(qū)的大小應(yīng)該怎么做?
通過(guò)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')
 
# 無(wú)緩沖,buffering為0
f4 = open('demo4.txt', 'wb', buffering=0)
f4.write(b'a')
f4.write(b'1234')

總結(jié)

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

相關(guān)文章

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

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

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

    一篇文章教會(huì)你PYcharm的用法

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

    python元類(lèi)編程的基本使用

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

    詳解python算法之冒泡排序

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

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

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

    Windows下安裝python MySQLdb遇到的問(wèn)題及解決方法

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

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

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

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

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

    Python圖像運(yùn)算之圖像灰度非線性變換詳解

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

    基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制

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

最新評(píng)論