Day09

今日总结

字符编码的发展史

一家独大-->群雄割据-->天下一统
'''
1.一家独大
美国人发明计算机,创造了英文字符与数字的对应关系,ASCII码诞生了
ASCII码,用一个字节表示,8位能够表示256个字符,可以用来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。
# A-Z : 65~90
# a~z : 97~122
2.群雄割据
当其他国家开始使用计算机时,就遇到了编码问题,于是各个国家都创造了自己的字符编码作为应对,
比如GBK(中国),euc_kr(韩国)
3.天下一统
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节)
UTF-8,是对Unicode编码的压缩和优化,所以UTF-8包含于Unicode,只是他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…
'''

字符编码实际运用

'''
1.编码与解码
编码
将人类看得懂的语言编码为计算机能直接读懂的字符
解码
将计算机的语言解码成人类能读懂的语言
# encode 编码
s1 = '一二三四五'
print(s1.encode('gbk')) # b'\xd2\xbb\xb6\xfe\xc8\xfd\xcb\xc4\xce\xe5'
字符串前面加了字母b 表示该数据类型为 bytes类型
      bytes类型可以看成是二进制
   
  # decode 解码
  s1 = b'\xd2\xbb\xb6\xfe\xc8\xfd\xcb\xc4\xce\xe5'
  print(s1.decode('gbk')) # 一二三四五
   
基于网络传输数据,数据必须是二进制格式

2.乱码问题的解决
搞清楚数据之前的编码方式就可以解决
s1 = '一二三四五'
s2 = s1.encode('gbk')
print(s2) # b'\xd2\xbb\xb6\xfe\xc8\xfd\xcb\xc4\xce\xe5'
s3 = s2.decode('euc_kr')
print(s3) # 寧랗힛愷巧 乱码
s4 = s2.decode('gbk')
print(s4) # 一二三四五
3.python解释器层面
python2解释器默认编码是ASCII码。转码方式
1.在文件最上方,指定编码
# coding:utf8
# -*- coding:utf8 -*- 美化写法
2.在字符前缀加u
python3解释器默认编码是utf8
'''

:

文件操作简介

# 文件是操作系统给用户提供的操作硬盘的快捷方式

# 操作文件
1.打开、创建文件
   2.编辑文件
   3.保存文件
   4.关闭文件
 
# 语法结构
1.结构1:
       f1 = open()
       f1.close()
   2.结构2:
       with open() as f:
           pass
       
1.打开文件
'''
# open(r'绝对路径/相对路径')
# 写路径的时候方式特殊符号,在字符前加r

open(文件的路径,文件的操作模式,文件的编码)
      1.文件的路径是必须要写的
      2.文件的操作模式、文件的编码在r/w t可以不写,在r/w b必须写
       
      open完最后都需要执行close 而close这一行容易被遗忘推荐是用下面方法
      with open(r'路径','r',encoding='utf8') as f:
      data = f.read()
      print(data)
      with中包含close()
'''
   

文件的读写

r read 只读
w write 只写
a append 只追加

'''
# r read
with open(r'a.txt', 'r', encoding='utf8') as f:
pass
路径不存在:直接报错
路径存在:打开文件

# w write
with open(r'a.txt', 'w', encoding='utf8') as f:
pass
路径不存在:自动创建文件
路径存在:先清空文件内容 之后再写入数据

# a append
with open(r'a.txt', 'a', encoding='utf8') as f:
pass
路径不存在:自动创建文件
路径存在:不会清空文件内容 而是在文件末尾添加内容
'''

文件的操作

1.t模式
文本模式,默认的模式
   r = rt
   w = wt
   a = at
   t可以省略
   # t模式只能操作文本文件
   # 必须指定encoding参数
   # 读写以字符串为最小单位
2.b模式
二进制模式,可操作性任意类型文件
   rb
   wb
   ab
   b不可省略
   1.不需指定encoding参数
   2.读写以bytes为最小单位

文件内置方法

read() # 一次性读取文件内容
执行完后光标在文件末尾,重复读取读不到,文件很大时,内存会溢出
readline() # 一次读一行
readlines() # 返回一个列表,列表中的一个元素为一行内容
readable() # 判断文件是否可读

write()  # 写入文件
writelines()  # 将列表中的元素写入文件
writable()  # 判断文件是否可写
flush()  # ctrl s

作业

练习周末大作业
1.编写一个简易版本的拷贝程序
路径全部自定义
   '''
  c_path = input('请输入待复制文件的地址>>>:').strip()
  v_path = input('请输入粘贴文件的地址>>>:').strip()

  with open(c_path, 'rb') as f:
      content = f.read()
  with open(v_path, 'wb') as j:
      j.write(content)
  '''
2.结合文件编写用户注册登录功能
# 提前先创建一个空的userinfo.txt
用户注册 数据保存到文件中
   用户登录 数据来源于文件
   1.必须给我写出来
  单用户注册登录
   2.拔高练习
  多用户注册登录
   '''
     
  '''
3.整理今日内容及博客、录音等

疫情有点严重,要上网课了

:

posted @ 2022-03-14 19:18  有梦想的阿九  阅读(69)  评论(0)    收藏  举报