day006|python基础回顾6

字符编码及文件处理

"""
1、什么是字符编码?
    文字符号-----------编码----------->数字
    文字符号<----------解码------------数字
    字符编码表:
        一个字符对应一个数字
2、为什么要研究字符编码?
    为了解决乱码问题:
        存取都用同一张字符编码表
3、储备知识
    CPU 内存 硬盘
    三个步骤
4、字符编码表的发展历程
    1、一家独大
        ASCⅡ:只能识别英文字符
            用8个bit对应一个英文字符
    2、天下大乱
        GBK:能识别中文和英文
            用16个bit(2Bytes)对应一个字符
        shift-JIS
        Euc-KR
    3、归于统一
        unicode:能识别万国字符
            常用的16bit(2Bytes)对应一个字符

    总结:
            英文字符------->内存(ASCⅡ格式的二进制数)---->硬盘(ASCⅡ格式的二进制数)
        中文、英文字符------->内存(GBK格式的二进制数)---->硬盘(GBK格式的二进制数)
        日文、英文字符--->内存(shift-JIS格式的二进制数)-->硬盘(shift-JIS格式的二进制数)

            万国字符----->内存(Unicode格式的二进制数)---->硬盘(utf-8格式的二进制数)
5、运行python程序的三个阶段
    1、先启动一个python解释器
    2、python解释器会将文件内容从硬盘读入内存
    3、python解释器会解释执行刚刚读入内存的代码,识别语法
        x = "你好Hello"
"""

# 字符-------->unicode格式的二进制(内存)---------------->utf-8格式的二进制(硬盘)
#       编码                              编码
# 字符<--------unicode格式的二进制(内存)<----------------utf-8格式的二进制(硬盘)
#       解码                              解码

# x = "上"
# print(x)  # 打印unicode相当于打印字符
#
# utf8_res = x.encode("utf-8")
# # print(utf8_res, type(utf8_res))  # b'\xe4\xb8\x8a' <class 'bytes'>
# unicode_res = utf8_res.decode("utf-8")
# print(unicode_res)
# 1、打开步骤
# f = open("aaa.py", mode='rt',encoding='utf-8')
# res = f.read()
# print(res)
# f.close()
# # f.read

# 上下文管理
# with open("aaa.py", mode='rt',encoding='utf-8') as f:
#     res = f.read()
#     print(res)
#     f.close()


# 2 文件打开模式
# Ⅰ 控制读写操作模式
# r: 只读(默认)
# w: 只写
# a: 只追加写

# Ⅱ 控制读写内容的模式
# t: 读写都是文本格式,即读写都是用字符串(默认)
# b: 读写都是bytes格式,bytes等同于二进制

# 强调:如果是t模式,一定要记住加上encoding="编码格式"
# 强调:如果是b模式,一定要记住不要加上encoding="编码格式"


# r:在文件存在的时候,文件指针调到文件的开头,文件不存在直接报错
# f = open("a.txt", mode="rt", encoding="utf-8")
# res = f.read()
# print(res)
# f.close()

# w:在文件存在的时候会清空文件,指针调到文件开头,文件不存在会创建空新文件
# f = open("a.txt", mode="wt", encoding="utf-8")
# f.write("你好\n666")
# f.close()

# a:在文件存在的时候不会清空文件,指针跳到文件末尾,文件不存在会创建空新文件
# f = open("a.txt", mode="at", encoding="utf-8")
# f.write("\n777")
# f.close()

# f = open("a.txt", mode="r+", encoding="utf-8")
# f.write("554")
# f.close()


# rb wb ab
# f = open("a.txt", mode="rb")
# res = f.read()
# print(res)
# print(res.decode("utf-8"))
# f.close()

# f = open("a.txt", mode="wb")
# f.write("你好".encode('utf-8'))
# f.close()

with open(r'H:\BaiduNetdiskDownload\Linux阶段总结\img\day004主板.png', mode='rb') as f1,\
  open(r'C:\Users\曹嘉鑫\Desktop\1111.png', mode='wb') as f2:
    # res = f1.read()
    # f2.write(res)
    for line in f1:
        f2.write(line)
    f1.close()
    f2.close()
posted @ 2020-11-24 21:35  drrug  阅读(61)  评论(0编辑  收藏  举报