对于一般的windows文本文档,每一行结尾都有“\r\n”这么四个字符,但是实际上你用记事本打开的时候是看不到这玩意儿的。
比如说,对于一个.csv文件,用记事本打开的时候是这个样子的:
用Excel打开是这个样子的:
用python3.4的二进制方式读取打开是这个样子的:(注意左上角的那个‘rb’,其实不用二进制,用文本的方式打开也一样)
可以看到每一行的结尾都有“\r\n”,太多所以我就不全不圈起来了。
不过对于windows环境下,当python在写入\n的时候,会自动补上一个\r,这一点特别蛋疼。听说是因为:
标准C的流提供系统无关抽象层
在C中使用fopen打开一个文本文件时流实现了实际换行符与C中\n之间的转换。在windows中当我们用fopen打开文本文件,然后从中读到\r\n时流会转换为\n,而当我们往文件中写入\n时流会转换为\r\n
因为流只对文本文件进行换行表示的转换,以二进制模式打开流不会做任何处理。所以当你以二进制模式打开一个文本文件时