91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中的 read函數如何按字節(字符)讀取文件

發布時間:2020-09-10 15:55:12 來源:億速云 閱讀:1119 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Python中的 read函數如何按字節(字符)讀取文件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

文件對象提供了 read() 方法來按字節或字符讀取文件內容,到底是讀取宇節還是字符,則取決于是否使用了 b 模式,如果使用了 b 模式,則每次讀取一個字節;如果沒有使用 b 模式,則每次讀取一個字符。在調用該方法時可傳入一個整數作為參數,用于指定最多讀取多少個字節或宇符。

例如,如下程序采用循環讀取整個文件的內容:

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

上面程序采用循環依次讀取每一個字符(因為程序沒有使用 b 模式),每讀取到一個字符,程序就輸出該字符。

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

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

如果在調用 read() 方法時不傳入參數,該方法默認會讀取全部文件內容。例如如下程序:

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

通過上面兩個程序,讀者可能已經發現了一個問題,當使用 open() 函數打開文本文件時,程序使用的是哪種字符集呢?總是使用當前操作系統的字符集,比如 Windows 平臺,open() 函數總是使用 GBK 字符集。因此,上面程序讀取的 test.txt 也必須使用 GBK 字符集保存;否則,程序就會出現 UnicodeDecodeError 錯誤。

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

使用二進制模式讀取,然后用 bytes 的 decode() 方法恢復成字符串。

利用 codecs 模塊的 open() 函數來打開文件,該函數在打開文件時允許指定字符集。

下面程序使用二進制模式來讀取文本文件:

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

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

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

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

關于Python中的 read函數如何按字節(字符)讀取文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃园县| 扎囊县| 麻城市| 临江市| 乡宁县| 肇州县| 册亨县| 卓资县| 南宁市| 普陀区| 阿瓦提县| 广平县| 米林县| 芒康县| 来凤县| 米脂县| 景德镇市| 哈巴河县| 连云港市| 福清市| 溆浦县| 平凉市| 玉田县| 濉溪县| 巧家县| 波密县| 丹寨县| 施甸县| 呼玛县| 静安区| 洛南县| 荣成市| 成安县| 广南县| 望江县| 军事| 灵武市| 遵化市| 万载县| 辽中县| 镇巴县|