文本文件和二进制文件的区别

大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。

我们对文件的操作一般分为读和写,这两个操作都对应到相应的编码,如果我们按照不同的编码方式去存储或者读取,产生的结果可能就不一样了。


image.png

二进制文件

最好理解的就是二进制文件,读取的时候就是存储的本来面貌。
新建一个文件x.txt,输入“猪八戒”,分别使用两种存储编码utf8和utf16

In [19]: with open('x.txt', 'rb') as f:
    ...:     print(f.read())

b'\xe7\x8c\xaa\xe5\x85\xab\xe6\x88\x92'   # utf8的结果
b'\xfe\xffs*Qkb\x12'  # utf16的结果


In [21]: m = b'\xe7\x8c\xaa\xe5\x85\xab\xe6\x88\x92'
In [22]: m.decode('utf-8')
Out[22]: '猪八戒'

字节流数据,我们可以理解成二进制数据,在Python中,字节流数据的格式是bytes。那为什么二进制数据又能显示正常的数据信息呢?
因为这些二进制数据在终端显示的时候,使用了utf-8进行了编码。

文本文件

文本文件在读取的时候,一般用定长的方式去读,例如每8个bit翻译成对应的ASCII码亦或者UTF-8码。

参考

【Python】中的bytes问题

你可能感兴趣的:(文本文件和二进制文件的区别)