美文网首页Python开发
文本文件与二进制文件的区别,以及windows下的换行符

文本文件与二进制文件的区别,以及windows下的换行符

作者: 零岁的我 | 来源:发表于2020-05-19 11:07 被阅读0次

1. 文本文件于二进制文件的区别

对于文本文件,比如 .txt 文件、.c 文件、.dat 文件等,使用一般的文本编辑器打开文件,我可以顺利看懂文件内容;而二进制文件通常用于保存音频、图片等不可直接阅读的内容,当使用文本编辑器打开二进制文件时,会看到一堆乱码,无法理解文件内容的实际语义。
实际上,从数据存储的角度来看,文本文件和二进制文件都是以二进制的形式存储在磁盘上。
我们之所以能看懂文本文件,是因为文本文件采用ASCII、UTF-8、GBK等字符编码,例如UTF-8字符编码,对于一个汉字会转换为3个字节进行存储,而GBK字符编码会将一个汉字转换为2个字节进行存储,文本编辑器能正确解码这些二进制数据,所以文本编辑器能正确显示文本文件的字符内容;而对于二进制文件,文本编辑器不知道要用那种字符编码对其进行解析,因此会看到一堆乱码。


2. python中按照文本格式和二进制格式打开文件的区别

python文件操作中函数open()函数可以按照文本格式和二进制格式打开文件,两者的本质区别在对文本换行符的处理不同。
在 Windows 系统中,文件中用 "\r\n" 作为行末标识符(即换行符),当以文本格式读取文件时,会将 "\r\n" 转换成 "\n";反之,以文本格式将数据写入文件时,会将 "\n" 转换成 "\r\n"。这种隐式转换换行符的行为,对用文本格式打开文本文件是没有问题的,但如果用文本格式打开二进制文件,就有可能改变文本中的数据(将 \r\n 隐式转换为 \n)。
而在 Unix/Linux 系统中,默认的文件换行符就是 \n,因此在 Unix/Linux 系统中文本格式和二进制格式并无本质的区别。


3. python写进文件产生对于空白行?

最近在写一个rtsp请求的语法异常检测程序,想把检测到的异常请求记录到日志文件,检测到异常请求用wireshark可查如下:


rtsp异常请求

然而写进文件却是这个鬼样子:


rtsp异常请求日志记录

会什么会产生多余空白行呢?
原因就是RTSP数据报中行结束标识'\r\n',结合2中的总结,不难发现,当以文本模式写进文件时,python会将'\r'以及'\n'自动隐式转换为'\r\n',因为windows上的换行符就是'\r\n',于是rtsp数据报每一行后面的'\r\n'都被转换为'\r\n\r\n',在windows系统上代表两个换行符,于是就产生了多余空白行。
最终的解决方法是将rtsp请求中的‘\r\n’替换掉,问题解决。
修改后写入文件结果为:

rtsp异常请求日志记录

相关文章

  • 文本文件与二进制文件的区别,以及windows下的换行符

    1. 文本文件于二进制文件的区别 对于文本文件,比如 .txt 文件、.c 文件、.dat 文件等,使用一般的文本...

  • Linux系统下如何去除文件中的换行符

    如何去除文件中的换行符 Windows下保存的文本文件,上传到Linux/Unix下后总会在末尾多了一个换行符^M...

  • 文本文件和二进制文件

    文本文件和二进制文件 两者并无本质区别,或者说文本文件就是特殊的二进制文件。最主要的区别就是打开文件的程序对内容的...

  • 换行符与换行数

    Windows换行符:CRLF Linux换行符:LF 在某些严格的文件内容校验情形下,文件内容的换行符与换行数都...

  • 二进制文件与文本文件的区别

    原文 文本文件和二进制文件的定义: 计算机在物理内存上面存放的都是二进制,所以文本文件和二进制文件的主要区别是在逻...

  • HTML 5&CSS快速入门

    1.计算机中的文件 二进制文件 文本文件区别:使用windows记事本打开是否出现乱码 2.网页组成 超文本标记语...

  • 每行都有个^M

    有没有在Linux下查看windows 文本文件的时候行结尾出现大量的^M. ^M是什么? 这个字符就是换行符,因...

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

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

  • Python 读写文件

    如何使用python在硬盘上创建,读取和保存文件文件分类:纯文本文件二进制文件 windows:根文件夹名为C:,...

  • RPC

    基于网络IO和传输协议RPC实现: 文本文件和二进制文件的区别 Hession 1、Hession的Binary-...

网友评论

    本文标题:文本文件与二进制文件的区别,以及windows下的换行符

    本文链接:https://www.haomeiwen.com/subject/nspvohtx.html