首页 > 其他 > 详细

9、字符编码和文件的打开模式

时间:2022-05-27 21:57:04      阅读:25      评论:0      收藏:0      [点我收藏+]

一、字符编码、

"""
1 什么是字符编码
  人类的字符转换成数字的过程称之为字符编码
?
  该过程需要参照一张表,该表称之为字符编码表
?
                      编码
  人类的字符-----------转换成--------------》数字
?
                      解码
  人类的字符《-----------转换成--------------数字
?
?
2 字符编码表
  a--00
  b--01
  c--10
  d--11
?
  ASCII: 用8bit对应一个英文字符
      可以识别英文字符
?
  gbk:用16bit对应一个字符
      可以识别中文字符、英文字符
?
  shift-JIS:
      可以识别日文字符、英文字符
?
  Euc-KR
      可以识别韩文字符、英文字符
?
  万国字符编码表:unicode,用16bit位对应一个字符
      兼顾两大历史使命
          1、可以识别万国字符
          2、兼容老的字符编码格式
?
  内存中用的字符编码格式默认都是unicode,而且不能改变
  我们可以改的是存入硬盘的字符编码格式
?
  万国字符------------》unicode格式的二进制(内存)---------》utf-8格式的二进制(硬盘)
  中文、英文字符------------》unicode格式的二进制(内存)---------》GBK格式的二进制(硬盘)
  日文、英文字符------------》unicode格式的二进制(内存)---------》shift-JIS格式的二进制(硬盘)
?
  utf-8全称Unicode Transformation Format,
?
若想保证不乱码
  1、保证存不乱
      存入硬盘的编码格式要能识别输入的字符
  2、保证读不乱
      存取硬盘用得都是同一种字符编码格式
  3、往硬盘存的新文件以后都存成utf-8格式
?
python3 D:\全栈18期\day09\代码\test.py
?
python3解释器默认读文件的编码格式是utf-8
python3解释器默认读文件的编码格式是ASCII
?
推荐用python3解释器,因为python3解释器存字符串类型的值会存储unicode格式
如果用到python2解释器,记得在字符串类型前加前缀u
?
"""

 

二、bytes类型

?
    编码                   编码
字符---------》unicode格式----------》utf-8格式
x = "上"
?
res = x.encode(‘utf-8‘)
print(res,type(res))
?
      解码                   解码
字符<---------unicode格式<----------utf-8格式
print(res.decode(‘utf-8‘))

 

三、with上下文管理

?
f = open(‘db.txt‘,mode=‘rt‘,encoding=‘utf-8‘)
print(f.read())
print(‘=‘*50)
print(f.read())
f.close()
?
?
with上下文管理
?
with open(‘db.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
   print(f.read())
   print(‘=‘*50)
   print(f.read())
?
?
with open(‘db.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f,\
       open(‘b.txt‘,mode=‘rt‘) as f1:
   print(f.read())
   print(‘=‘*50)
   print(f.read())

 

四、文件的打开模式

文件的打开模式分为两大类
控制文件读写内容
t(默认):无论读写都是以字符串为单位的,必须指定encoding参数
b:无论读写都是以bytes为单位的
?
?
控制文件读写操作
r(默认):只读模式
w:只写
a:只写(追加写)
?
rt wt at
rb wb ab
?
?
r:如果不存在则报错,如果文件存在则指针置于文件开头
with open(‘a.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
   print(f.read())
   print(‘=‘*50)
   print(f.read())
   for line in f:
       print(line)
?
   f.write("你好")  # 报错
?
?
?
w:如果不存在则创建空文档,如果文件存在则清空,指针置于文件开头
with open(‘a.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
   f.write("你好啊1\n")
   f.write("你好啊2\n")
   f.write("你好啊3\n")
   print(f.read())  # 报错
?
?
a:如果不存在则创建空文档,如果文件存在则清空,指针置于文件末尾
with open(‘c.txt‘,mode=‘at‘,encoding=‘utf-8‘) as f:
   f.write("你好啊1\n")
   f.write("你好啊2\n")
   f.write("你好啊3\n")
?
   print(f.read())  # 报错

 

 

9、字符编码和文件的打开模式

原文:https://www.cnblogs.com/daishenmin/p/15340013.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!