不同系统下默认的换行符不同。Windows使用\r\n,Unix使用\n,Mac使用\r。这种“不同”在字符处理时会带来问题,例如line[-2]和line.strip()在不同平台返回的值可能不同。解决方法:Python 2使用wb和rb进行二进制读写,不会遇到换行问题。使用rU读取文件,将所有换行符替换为\n。推荐使用此模式,只支持读入。对比r和rU的使用效果。Python 3中,通过open函数的newline参数控制Universal new line mode。默认开启,所有\n, \r, or \r\n被转换为\n。写入时,不指定newline则使用各系统默认的换行符,指定为newline='\n'则都替换为\n。设置newline为None, '', '\n', '\r', '\r\n'控制Universal new line mode的行为。参考文献:PEP 278 -- Universal Newline Support, Python 3 open: 2. Built-in Functions。