到目前为止,打开文件和读取文本行的所有例子都有一个假设,认为文件中实际上都包含有文本。要记住,文件能够存储任何内容,文本只是其中的一种。程序员把所有其他类型的文件都统称为二进制文件(binary file)。
可以打开的文件主要有以下两种类型。
文本文件:这些文件包含了文本,包括字母、数字、标点符号和一些特殊字符,如换行符。
二进制文件:这些文件不包含文本,它们可能包含音乐、图片或其他类型的数据。不过由于不包含文本,所以这些文件中也没有行,因为根本不存在换行符。
这说明不能对二进制文件使用 readline
或 readlines
。例如,如果想要从一个 .wav 文件读取一“行”,你根本无法知道会得到些什么。大多数情况下,你可能会得出一大堆奇怪的东西,就像这样:
.wav 文件最前面有一些东西看起来像是文本,不过后面就很莫名其妙了。这是因为 .wav 文件不包含文本,只包含声音。readline
和 readlines
方法只能用于读取文本文件。
大多数情况下,如果需要使用二进制文件,就要通过 Pygame 或其他一些模块来加载文件,就像在第 19 章中一样。
pygame.mixer.music.load('bg_music.mp3')
那样就会由 Pygame 负责打开文件并读取二进制数据(在这个例子中,二进制数据就是音乐)。
这本书不打算介绍如何处理二进制文件。不过没准你想知道二进制是什么样子,可以为文件模式增加一个 b 来打开二进制文件,就像这样:
my_music_file = open('bg_music.mp3', 'rb')
这里的 'rb'
部分表示我们要打开文件并以二进制模式读取文件。
在前面几节中,我们已经了解了如何将信息从文件读入程序,这称为读文件。接下来我们要学习如何将程序的信息放入到文件中,这称为写文件。