最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python read函數(shù)按字節(jié)(字符)讀取文件的實(shí)現(xiàn)

 更新時(shí)間:2019年07月03日 11:25:02   作者:biancheng  
這篇文章主要介紹了Python read函數(shù)按字節(jié)(字符)讀取文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

文件對(duì)象提供了 read() 方法來(lái)按字節(jié)或字符讀取文件內(nèi)容,到底是讀取宇節(jié)還是字符,則取決于是否使用了 b 模式,如果使用了 b 模式,則每次讀取一個(gè)字節(jié);如果沒(méi)有使用 b 模式,則每次讀取一個(gè)字符。在調(diào)用該方法時(shí)可傳入一個(gè)整數(shù)作為參數(shù),用于指定最多讀取多少個(gè)字節(jié)或宇符。

例如,如下程序采用循環(huán)讀取整個(gè)文件的內(nèi)容:

f = open("read_test.py", 'r', True)
while True:
  # 每次讀取一個(gè)字符
  ch = f.read(1)
  # 如果沒(méi)有讀到數(shù)據(jù),跳出循環(huán)
  if not ch: break
  # 輸出ch
  print(ch, end='')
f.close()

上面程序采用循環(huán)依次讀取每一個(gè)字符(因?yàn)槌绦驔](méi)有使用 b 模式),每讀取到一個(gè)字符,程序就輸出該字符。

正如從上面程序所看到的,當(dāng)程序讀寫完文件之后,推薦立即調(diào)用 close() 方法來(lái)關(guān)閉文件,這樣可以避免資源泄露。如果需要更安全地關(guān)閉文件,推薦將關(guān)閉文件的 close() 方法調(diào)用在 finally 塊中執(zhí)行。例如,將上面程序改為如下形式:

f =open ("test.txt",'r',True)
try:
  while true:
    #每次讀取一個(gè)字符
    ch = f.read(1)
    #如果沒(méi)有讀取到數(shù)據(jù),則跳出循環(huán)
    if not ch:break
    #輸出ch
    print(ch, end='')
  finally:
    f.close() 

本章為了突出主題,簡(jiǎn)化程序,都將直接調(diào)用 close() 方法關(guān)閉文件,避免使用 finally 塊。

如果在調(diào)用 read() 方法時(shí)不傳入?yún)?shù),該方法默認(rèn)會(huì)讀取全部文件內(nèi)容。例如如下程序:

f = open("test.txt", 'r', True)
# 直接讀取全部文件
print(f.read())
f.close()

通過(guò)上面兩個(gè)程序,讀者可能已經(jīng)發(fā)現(xiàn)了一個(gè)問(wèn)題,當(dāng)使用 open() 函數(shù)打開(kāi)文本文件時(shí),程序使用的是哪種字符集呢?總是使用當(dāng)前操作系統(tǒng)的字符集,比如 Windows 平臺(tái),open() 函數(shù)總是使用 GBK 字符集。因此,上面程序讀取的 test.txt 也必須使用 GBK 字符集保存;否則,程序就會(huì)出現(xiàn) UnicodeDecodeError 錯(cuò)誤。

如果要讀取的文件所使用的字符集和當(dāng)前操作系統(tǒng)的字符集不匹配,則有兩種解決方式:

  1. 使用二進(jìn)制模式讀取,然后用 bytes 的 decode() 方法恢復(fù)成字符串。
  2. 利用 codecs 模塊的 open() 函數(shù)來(lái)打開(kāi)文件,該函數(shù)在打開(kāi)文件時(shí)允許指定字符集。

下面程序使用二進(jìn)制模式來(lái)讀取文本文件:

# 指定使用二進(jìn)制方式讀取文件內(nèi)容
f = open("read_test3.py", 'rb', True)
# 直接讀取全部文件,并調(diào)用bytes的decode將字節(jié)內(nèi)容恢復(fù)成字符串
print(f.read().decode('utf-8'))
f.close()

上面程序在調(diào)用 open() 函數(shù)時(shí),傳入了 rb 模式,這表明采用二進(jìn)制模式讀取文件,此時(shí)文件對(duì)象的 read() 方法返回的是 bytes 對(duì)象,程序可調(diào)用 bytes 對(duì)象的 decode() 方法將它恢復(fù)成字符串。由于此時(shí)讀取的 read_test3.py 文件是以 UTF-8 的格式保存的,因此程序需要使用 decode() 方法恢復(fù)字符串時(shí)顯式指定使用 UTF-8 字符集。

下面程序使用 codes 模塊的 open() 函數(shù)來(lái)打開(kāi)文件,此時(shí)可以顯式指定字符集:

import codecs
#指定使用utf-8 字符集讀取文件內(nèi)容
f = codecs.open("read_test4.py", 'r', 'utf-8', buffering=True)
while True:
  #每次讀取一個(gè)字符
  ch = f.read(1)
  #如果沒(méi)有讀取到數(shù)據(jù),則跳出循環(huán)
  if not ch : break
  #輸出ch
  print (ch, end='')
f.close()

上面程序在調(diào)用 open() 函數(shù)時(shí)顯式指定使用 UTF-8 字符集,這樣程序在讀取文件內(nèi)容時(shí)就完全沒(méi)有問(wèn)題了。

相關(guān)文章

  • 利用Python將社交網(wǎng)絡(luò)進(jìn)行可視化

    利用Python將社交網(wǎng)絡(luò)進(jìn)行可視化

    這篇文章介紹了利用Python將社交網(wǎng)絡(luò)進(jìn)行可視化,主要是一些Python的第三方庫(kù)來(lái)進(jìn)行社交網(wǎng)絡(luò)的可視化,利用領(lǐng)英(Linkedin)的社交關(guān)系數(shù)據(jù)展開(kāi)介紹,內(nèi)容可當(dāng)學(xué)習(xí)練習(xí)題有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Python實(shí)現(xiàn)的旋轉(zhuǎn)數(shù)組功能算法示例

    Python實(shí)現(xiàn)的旋轉(zhuǎn)數(shù)組功能算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的旋轉(zhuǎn)數(shù)組功能算法,結(jié)合實(shí)例形式總結(jié)分析了數(shù)組旋轉(zhuǎn)算法的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • Django如何實(shí)現(xiàn)RBAC權(quán)限管理

    Django如何實(shí)現(xiàn)RBAC權(quán)限管理

    這篇文章主要介紹了Django如何實(shí)現(xiàn)RBAC權(quán)限管理問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python多線程的退出控制實(shí)現(xiàn)

    Python多線程的退出控制實(shí)現(xiàn)

    這篇文章主要介紹了Python多線程的退出控制實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python通過(guò)UDP傳輸超過(guò)64k的信息

    Python通過(guò)UDP傳輸超過(guò)64k的信息

    在UDP中,單個(gè)數(shù)據(jù)包的最大尺寸通常受到網(wǎng)絡(luò)層的限制,這通常被稱為最大傳輸單元(MTU),在以太網(wǎng)環(huán)境中,標(biāo)準(zhǔn)的MTU大小通常為1500字節(jié),下面是一個(gè)Python示例,展示了如何通過(guò)UDP發(fā)送和接收超過(guò)64KB的數(shù)據(jù),需要的朋友可以參考下
    2024-08-08
  • flask中的wtforms使用方法

    flask中的wtforms使用方法

    這篇文章主要介紹了flask中的wtforms使用方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • 解決Python報(bào)錯(cuò):SyntaxError:?invalid?character?‘,‘?(U+FF0C)

    解決Python報(bào)錯(cuò):SyntaxError:?invalid?character?‘,‘?(U+FF0C)

    Python中的 SyntaxError錯(cuò)誤是Python語(yǔ)言中常見(jiàn)的異常錯(cuò)誤類型之一,表示語(yǔ)法錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于解決Python報(bào)錯(cuò):SyntaxError:?invalid?character?‘,‘?(U+FF0C)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 為什么說(shuō)python更適合樹(shù)莓派編程

    為什么說(shuō)python更適合樹(shù)莓派編程

    在本篇文章里小編給大家整理的是關(guān)于為什么說(shuō)python更適合樹(shù)莓派編程的相關(guān)文章,需要的朋友們可以參考學(xué)習(xí)下。
    2020-07-07
  • Python 生成一個(gè)從0到n個(gè)數(shù)字的列表4種方法小結(jié)

    Python 生成一個(gè)從0到n個(gè)數(shù)字的列表4種方法小結(jié)

    今天小編就為大家分享一篇Python 生成一個(gè)從0到n個(gè)數(shù)字的列表4種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python使用pymysql模塊操作MySQL

    python使用pymysql模塊操作MySQL

    本文講述了python操作mysql基礎(chǔ)實(shí)例展示,包含pymysql的使用,tkinter的使用,感興趣的朋友可以參考下
    2021-06-06

最新評(píng)論

武宁县| 密云县| 贵定县| 广饶县| 乐至县| 海晏县| 鸡泽县| 曲松县| 韩城市| 南宁市| 鸡东县| 科技| 平安县| 惠水县| 怀远县| 娱乐| 绵阳市| 安平县| 绿春县| 钟山县| 萍乡市| 呼玛县| 新营市| 雷州市| 花莲市| 上杭县| 沁水县| 桐柏县| 夏河县| 高唐县| 石柱| 富裕县| 那坡县| 华宁县| 寿宁县| 龙陵县| 谢通门县| 甘肃省| 宁乡县| 南宁市| 丹巴县|