DAY 4 Python编码方式与文件处理

常见编码方式

ascii:总共由包含英文大小写、数字、符号等256个常用英文字符构成。每个字符占1字节。

unicode:万国码。支持所有国家的语言,与所有国家的编码都有映射关系。使用2-4字节存储一个字符,比ascii编码要多一倍。

utf-8:优化了unicode的空间占用。是一种可变长的编码,英文占1字节,西欧字符占2字节,中文占3字节。存储文件或网络发送时使用,但在内存中文件仍以unicode的方式编码。

gbk:为解决汉字的编码而生成的解决方案,英文使用ascii码表示,占一字节;中文用双字节表示,编译时通过字节最高位判断是中文还是英文,最高位为0代英文,为1代表中文。

编码方式的声明:Python2默认ascii编码,Python3默认unicode编码;除了在Pycharm软件上设置更改编码方式外,还可以通过在程序开头添加编码方式的声明来更改编码方式。

声明使用utf-8:

# -*- codeing = utf-8 -*-

声明使用gbk编码:

# coding=gbk

声明使用解释器默认编码:

# encoding = None

总而言之,一般使用utf-8编码。主要面对中文的程序一般使用gbk编码。也可以在程序报错时再决定使用哪种编码。(例如若utf-8报错,则尝试使用gbk)

Python3.8的编码方式与encode、decode

在python3中,默认编码为unicode,由str类型表示。将str类型转换为byte类型的过程称为编码,将byte类型转换为str类型的过程称为解码。参考python3默认编码格式转换_python3默认使用什么编码_weixin_39670627的博客-CSDN博客的代码可以直观地理解编码与解码。

str = "我是Python3.8"
str_utf8 = str.encode('utf-8')
str_gbk = str.encode('GBK')
print(str)
print("UTF-8编码:", str_utf8)
print("---------------------------------------------------")
print("GBK编码:",str_gbk)
print("---------------------------------------------------")
print("UTF-8解码:", str_utf8.decode('utf-8'))
print("---------------------------------------------------")
print("GBK解码:",str_gbk.decode('GBK'))
print("---------------------------------------------------")


# 输出:
# 我是Python3.8
# UTF-8编码: b'\xe6\x88\x91\xe6\x98\xafPython3.8'
# ---------------------------------------------------
# GBK编码: b'\xce\xd2\xca\xc7Python3.8'
# ---------------------------------------------------
# UTF-8解码: 我是Python3.8
# ---------------------------------------------------
# GBK解码: 我是Python3.8
# ---------------------------------------------------

Python的文件处理

文件的基本操作:

# 【打开/创建操作】
# 语法:f = open("文件名","打开模式")  #打开/创建文件

#一般模式
f = open("文件名","r")    #只读模式
f = open("文件名","w")    #创建模式,若文件已存在,覆盖旧文件
f = open("文件名","a")    #追加模式,新数据写到文件的末尾

#二进制模式
f = open("文件名","rb")    #二进制只读模式
f = open("文件名","wb")    #二进制创建模式,若文件已存在,覆盖旧文件
f = open("文件名","ab")    #二进制追加模式,新数据写到文件的末尾

#混合模式
f = open("文件名","r+")    #读写模式,最常使用
f = open("文件名","w+")    #写读模式,不常使用
f = open("文件名","a+")    #追加读模式,不常使用



#【写操作】

#一般写操作
f.write("我是野生程序员")

#二进制写操作
f = open("wb_file","wb")  #不能直接输入字符串,而应将字符串进行二进制编码
s = "路费"
f.write(s.encode("gbk"))  #将s进行gbk编码



#【读操作】
f.read()    #读出所有内容
f.readline()    #读一行
f.readlines()    #每行当作一个元素读,读出时全部排在一行

#P.S.读和写分别有一个光标,二者互不干涉



#【关闭】
f.close()   #保存并关闭



#【遍历】
f = open("文件名")
for line in f:  #每循环一次读一行
    print(line)

其他常用操作:seek  tell   flush

f = open("文件名")



f.seek(7)    # seek - 把操作文件的光标按字节移动到制定位置(每个字符占多少个字节取决于编码方式)



f.tell()    # tell - 返回光标所在位置



f.flush()    # flush - 把缓存中的数据强制刷新到硬盘上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值