讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 22.6 文本文件和二進制文件 >

22.6 文本文件和二進制文件

到目前為止,打開文件和讀取文本行的所有例子都有一個假設,認為文件中實際上都包含有文本。要記住,文件能夠存儲任何內容,文本只是其中的一種。程序員把所有其他類型的文件都統稱為二進制文件(binary file)。

可以打開的文件主要有以下兩種類型。

  • 文本文件:這些文件包含了文本,包括字母、數字、標點符號和一些特殊字符,如換行符。

  • 二進制文件:這些文件不包含文本,它們可能包含音樂、圖片或其他類型的數據。不過由於不包含文本,所以這些文件中也沒有行,因為根本不存在換行符。

這說明不能對二進制文件使用 readlinereadlines。例如,如果想要從一個 .wav 文件讀取一「行」,你根本無法知道會得到些什麼。大多數情況下,你可能會得出一大堆奇怪的東西,就像這樣:

.wav 文件最前面有一些東西看起來像是文本,不過後面就很莫名其妙了。這是因為 .wav 文件不包含文本,只包含聲音。readlinereadlines 方法只能用於讀取文本文件。

大多數情況下,如果需要使用二進制文件,就要通過 Pygame 或其他一些模塊來加載文件,就像在第 19 章中一樣。

pygame.mixer.music.load('bg_music.mp3')  

那樣就會由 Pygame 負責打開文件並讀取二進制數據(在這個例子中,二進制數據就是音樂)。

這本書不打算介紹如何處理二進制文件。不過沒準你想知道二進制是什麼樣子,可以為文件模式增加一個 b 來打開二進制文件,就像這樣:

my_music_file = open('bg_music.mp3', 'rb')  

這裡的 'rb' 部分表示我們要打開文件並以二進制模式讀取文件。

在前面幾節中,我們已經瞭解了如何將信息從文件讀入程序,這稱為讀文件。接下來我們要學習如何將程序的信息放入到文件中,這稱為寫文件。