encode decode 跟文件读写相关的

encode:编码:就是将字符串转换为字节码(二进制)。编码:软件指定编码方式,告诉操作系统按照什么样的编码方式对字符串进行编码,然后存放到文件中保存。

decode:解码:将字节码(二进制)转换为字符串。解码:软件读取文件,告诉操作系统按照什么样的编码方式对文件里的字节进行解码,然后将字符串交给软件。

 读文件的时候操作系统帮我们解码,写文件的时候操作系统帮我们编码写到磁盘。

以什么编码方式进行,如果软件代码没有指定,则使用操作系统默认的,否则使用软件指定encoding参数。

Windows操作系统默认编码是GBK

Linux和Mac操作系统默认编码是UTF-8

"w"方式写文件

with open("lfj-默认.txt", "w") as f:
    f.write("李凤娟")

with open("lfj-utf8.txt", "w", encoding='utf-8') as f:
    f.write("李凤娟")

 

 

 

 

 

"wb"方式写文件, 以wb或rb操作文件的时候,就是告诉操作系统不要进行编解码了,直接存,我读写的就是字节码,直接存取

with open("lfj-b-默认.txt", "wb") as f:
    f.write("李凤娟".encode())#str.encode(encoding='utf-8', errors='strict'),python里encode()默认编码是utf-8
with open("lfj-b-gbk.txt", "wb") as f:
    f.write("李凤娟".encode("GBK"))

 

 

 

 

"r"读文件

以默认的编码方式读取文件,我使用的是Windonws系统,Windows系统默认的编码是GBK,这里采用GBK的方式读取一个UTF-8编码的文件,出现错误

with open("lfj-utf8.txt", "r") as f:
    data = f.read()
    print(data)

 加上编码方式就正确读取了

with open("lfj-utf8.txt", "r", encoding='utf-8') as f:
    data = f.read()
    print(data) # 李凤娟

 

 以Windows系统默认编码读取gbk的文件,成功读取

with open("lfj-b-gbk.txt", "r") as f:
    data = f.read()
    print(data) # 李凤娟

"rb"读取

以rb或者wb读写文件的时候,不能指定encoding参数

 

复制代码
with open("lfj-utf8.txt", "rb") as f:
    data = f.read()
    print(data)  # b'\xe6\x9d\x8e\xe5\x87\xa4\xe5\xa8\x9f'
    str1 = data.decode(encoding='utf-8')
    print(str1)  # 李凤娟
    str1 = data.decode()
    print(str1)  # 李凤娟

with open("lfj-b-gbk.txt", "rb") as f:
    data = f.read()
    print(data)  # b'\xc0\xee\xb7\xef\xbe\xea'
    str1 = data.decode(encoding='GBK')
    print(str1)  # 李凤娟
复制代码

 

posted @   勋勋的大宝贝  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示