最近在处理文本文件时,遇到编码格式和换行符的问题。
基本上都是GBK 和 UTF-8 编码的文本文件,但是python3 中默认的都是按照 utf-8 来打开。用不正确的编码参数打开,在读取内容时,会抛出异常。
open(dirpath + "\\" + file, mode = "r+", encoding = "gbk", newline = "")
捕获抛出的异常,关闭文件。使用另外一种编码格式打开文件再重新读取。
读取文件时,
newline参数用来指定读取时,对换行符的处理。缺省为 None,表示通用的换行符(“\n”),即文件的换行符是啥,读出来都是 “\n”.
newline = "" 表示读取的换行符保持不变,原来是啥,读出来还是啥。
newline = “\n” 表示遇到 "\n" 才一行结束,“\r” 像其他普通字符一样对待。
newline = “\r” 表示遇到 "\r" 才一行结束,“\n” 像其他普通字符一样对待。
在文件写入时,
newline = None时,写入的“\n” 自动都变为系统默认的换行符。所以 “\r\n” 在windows下会变成“\r\r\n”写入。
newline = "" 表示不做任何转换写入。
newline = “\n” 表示不做任何转换写入。
newline = “\r” 表示将 “\n” 和 "\r" 都当做 "\r" 进行写入