文本文件 vs 二进制文件 - 用途、文件格式、示例
主要有两种类型的文件:
文本文件 (Text File)
文本文件是以人类可读的文本格式(ASCII 或 Unicode 字符序列)存储信息的最简单方法,其中也包括数值。
使用任何文本编辑器(如记事本甚至 IDLE)都可以轻松查看和修改文本文件的内容。
甚至 Python 脚本本身也存储为扩展名为 .py
的文本文件。.txt
是用于通用文本文件的最流行扩展名。
虽然文本文件没有任何结构,但有一些国际标准定义了一些创建专用文本文件的规则,例如:
.csv
,其中每行是一组逗号分隔的值。这是最流行的数据交换格式。.tsv
,类似于 CSV,但值由制表符而不是逗号分隔。.xml
和.json
是流行的 Web 数据交换格式。.html
文件是文本文件,其内容以超文本标记语言编写,设计用于在 Web 浏览器中显示内容。
二进制文件 (Binary File)
虽然文本文件的内容是人类可读的,但实际上这些信息是以机器可读的字节(1 和 0)形式存储在磁盘上的,一次一个字符。这使得格式易于被任何应用程序操作,但效率较低且消耗更多内存(文件尺寸更大)。
在二进制文件中,内容也以字节形式存储,但这些字节不直接转换为 ASCII 或 Unicode 字符。
相反,这些字节可以表示任何东西,例如:
- 复杂的数据结构
- 图像
- 音频
- 视频
等等。
由于没有简单的规则来确定信息的基本单位,因此在文本编辑器中打开二进制文件将显示乱码,甚至单个位的更改都可能损坏整个文件并使其不可读。因此,需要专门的软件来读取和写入二进制文件。
Python 有一个内置的 pickle
模块,它实现了读取和写入具有 .dat
或 .pickle
文件扩展名的二进制文件的协议。pickle
是 Python 特定的二进制文件格式,可以将任何 Python 数据结构(列表、字典等)或代码对象序列化为二进制文件。然后,可以在运行 Python 的任何计算机上反序列化此文件的字节内容并稍后使用。