文件操作与应该注意的编码问题

open方法

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
如上,第一个参数 ‘文件名’或者‘\目录\目录\文件’,

第二个参数,打开文件的模式 r:只读,r+:可读可写,w:覆盖写,w+:覆盖写,写完再读;a:追加写,还有一堆堆二进制文件的操作(如图片,视频等),就是 rb,wb等同理。

记录下修改文件的两种方法:1>占硬盘方式修改文件(思路:逐行读取文件,写入到另一个文件,若碰到需要修改的内容,则修改再写入另一文件,最后用新文件覆盖旧文件)

文件操作与应该注意的编码问题

效果如下(update1为源文件,更改其中内容存放至update3,再重命名覆盖源文件):

文件操作与应该注意的编码问题

文件操作与应该注意的编码问题

2>占内存方式修改文件(思路:把文件的所有内容全部读取到内存,对需要修改的内容进行修改,再全部覆盖写至原文件(写之前可以先清空全部内容))

文件操作与应该注意的编码问题

效果如下

文件操作与应该注意的编码问题

再说一下encode这个参数,几时要用到呢?

分情况看:1>若读写文件在系统上直接创建的(即文件通过鼠标右键创建),因中文系统编码格式为gb2312(可能也有gbk),所以这样直接创建的文件编码格式就是gb2312,但是,若你通过pycharm或者其他IDE去打开,如果你指定了编译器为python3.x(默认编码utf-8),这个时候你查看文件是会出现乱码的。如下图

文件操作与应该注意的编码问题

文件操作与应该注意的编码问题文件操作与应该注意的编码问题

这个时候读或者写都不用加encode参数,python3会自己去匹配转换,你只是看起来乱了(并且是错误的看法),系统都是正常显示的。

2>若文件是通过pycharm创建的(指定的编译器为python3.x),这时候在pycharm和系统上查看均显示正常,这个去读取并且print的时候,是会报错的(因为要显示出汉字的形状,所以print的时候默认去找gbk,但是这份文件是用utf-8编码写的,所以出错了)。

文件操作与应该注意的编码问题

所以这个时候要指定编码格式,告知程序这份文件是通过utf-8编码的,你要去找utf-8的中文对照表,如下

文件操作与应该注意的编码问题

读的时候指定了 utf-8的编码格式,那么写入呢?-----下面为 不指定编码格式,指定utf-8,指定gbk或者gb2312, 三中情况

文件操作与应该注意的编码问题

文件操作与应该注意的编码问题

文件操作与应该注意的编码问题

总结就是:读文件用啥编码(或者不用),写入也用啥编码(或者不用)。还有不要看到文本显示乱码就慌了,那就是因为写入文件时的编码和查看时的编码不一致所致,这是自己最近读写文档遇到的编码的坑,若有问题还请指出,谢谢。