分享

这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)

 麦子聊数码 2022-10-19 发布于云南

    很多同学对于编码问题都不是很清楚,计算机常见的编码格式为:

       ASCII

        ISO-8859-1

        GB2312

        GBK

        UTF-8

        UTF-16

     对于Python开发中,我们一般都是采用统一的编码格式:UTF-8

第一行加入环境申明:

 #coding=utf-8

     编码操作方式一般都分为:编码(encode)和解码(decode) 但是对于今天我们所要讲解的主角Python来说:

       unicode和str两种类型的相互转换则为解码和编码。如下列子:

# coding = utf-8# Python编码问题str = "您好"print("输出字符类型--->>>", type(str))print(str)# 采用 encode编码str1 = str.encode('gbk')print("gbk--encode--输出字符类型---->>>>", type(str1))print(str1)str2 = str1.decode('gbk')print("-gbk----decode解码--->>>", str2)str3 = str.encode('utf-8')print("utf-8---->>encode----->>>", str3)str4 = str3.decode('utf-8')print("utf-8---decode---->>>",str4)

     列子中可以看出,不同的编码格式的输出的字符是不一样的字符表达,我们在使用编码和解码的时候都需要采用同一种编码格式进行两者操作,否则就报错。

     pritn中文编码问题

如下图:

      python打印变量时,操作系统会对变量进行相应的处理,若变量是str类型,则操作系统直接发送到终端显示,若变量是unicode类型,则操作系统会对变量用sys.stdout.encoding编码对变量encode,若变量中含有sys.stdout.encoding未定义字符,则会出现UnicodeEncodeError。编码后字节序列被发送给终端,假若终端设置的编码和str编码不一致,终端就会显示出乱码。

     两种错误情况:

1:UnicodeEncodeError

    若变量中含有sys.stdout.encoding未定义字符则会出现如上错误。一般避此个错误的方式就是:

print("本地终端环境的默认编码---->>>",sys.getdefaultencoding())

首先打印出本地环境的编码格式,然后在字符串编码的时候就现在对应的编码格式进行编码和解码。

a = '你好呀'b = u'Python'print("--->>>",a)print('采用utf-8--->>',b.encode('utf-8'))

接下来我们来从实例中看看,编码和解码的用法。

# 读取txt 设置编码格式 一定要加上encoding 也就是文件的打开的编码格式 ,不加encoding则报错。f = open("D:\\imgs\\test.txt",encoding='utf-8')s = f.read()f.close()print("--->>>",type(s))print("---->>>", s)

    总结,Python3中编码问题比Python2有了很多改善。

3中的编码我们只需要记住一点,打开读取文件的时候一定要声明编码格式,开发编程前都提前设置好环境编码,一般都是默认的utf-8格式,解码和编码都使用统一的编码格式进行操作,这样就能保存文件操作的时候不会出现编码。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多