day 08

内容概要

  • 字符编码
  • 文件处理

内容详细

  • 字符编码

    计算机内部存储数据都是以二进制数字的形式存储
    	计算机基于点工作 而电信号只有高低电平两种状态
        也就以为着计算机的世界里只能识别两种状态
        我们人为的将高电平定义为数字:1
        		  地电平定义为数字:0
     
    单位换算(重要***)
    	比特位bit(二进制数的个数)
        8bit = 1 bytes(字节)
        1024bytes = 1KB
        1024KB= 1MB
        1024MB = 1GB
        1024GB = 1TB
        1024TB = 1PB
        ...
        字符编码的研究仅限于文本文件(******)
        
        
        为什么人类在使用计算机输入字符的时候电脑显示是人类能看懂的字符
        而计算机内部只识别二进制
        00001111                   》》》》                   我
        00001000                   》》》》                   你
        计算机二进制             设定好对应关系             人类的字符
        
        因此如何设定对应关系:
        字符编码表  : 规定了人类的字符与数字之间的对应关系
    
  • 字符编码的发展史

    三个阶段:
    一家独大:美国ASCII
    群雄割据:中国GBK
    		 日本shift_JIS
        	 韩国Euc_kr
    天下统一:Unicode   改进》》》utf-8
    
    
    一家独大
    	计算机是由美国人发明的 美国人需要计算机能够识别英文
        所以发明了ASCII码(字符编码表)
        	记录了英文与数字的对应关系
            	1bytes来表示所有的英文及符号
        			8bit	256
                     # 所有的英文字母及符号加起来其实也不会超过128种可能
    群雄割据
    	中国
        	中国人为了计算机能够识别中文发明了GBK码
            GBK码表
            	记录了中文、英文与数字的对应关系
                	2bytes来表示中文及符号
                    	16bit       65535
                    1bytes来表示所有的英文及符号
                        # 生僻字可能会使用更多的bytes来表示
            
        日本
        	日本人为了计算机能识别日文发明了shift_JIS码
            shift_JIS码表
            	记录了日文、英文与数字的对应关系
                1bytes来表示所有的英文及符号
                	
        韩国
    		韩国人为了计算机能识别韩文发明了Euc_kr码
            Euc_kr码表
            	记录了韩文、英文与数字的对应关系
                1bytes来表示所有的英文及符号
    天下一统
    	群雄割据导致数据交互不通畅(乱码)
        unicode万国码
        	兼容万国字符
            所有的字符同意使用2bytes表示 不够增加更多bytes
        utf8
        	unicode transformation format
            英文还是用1bytes
            中文改用3bytes
       # 内存使用的编码表是unicode 硬盘使用的是utf8
    '''已经你们只需要记住文本文件编码统一使用utf8即可'''
    
  • 字符编码实操

    1.解决文件乱码的核心
    	文件以什么编码存的就以什么编码取
    2.编码与解码(编码)
    	编码
        	将人类的字符按照指定的编码转换成计算机能够识别的数据
            encode()
         解码
        	将计算机能够识别的数据按照指定的编码转换成人类能够读懂的字符
            decode()
    3.python解释器默认编码
    	python2默认的是ASCII码
        	在python2中定义字符串在前面加一个字母u
            文件头指定编码
            	# -*- conding:utf8 -*-
                name = u'jason'
         python3默认的是utf-8
    
  • 文件操作

    操作系统
    	Windows mac Linux
    双击文件
    	硬盘转 磁头读取数据
    保存文件
    	硬盘转 磁头写入数据
     
    我们在操作文件的时候其实操作的是硬盘
    '''文件其实是操作系统暴露给我们可以简单快捷的操作硬盘的接口'''
    
    绝对路径与相对路径
    	绝对路径
        	非常详细的路径描述
            	无论什么人什么位置都能找到
         相对路径
        	有一个参考物
            	只有对应的人才可以找到
                	
                    
     res = open(r'a.txt','r',encoding='utf-8')
     print(res.read())
     res.close()  # 这步操作是必须的 不然就会变成垃圾占内存
    
     打开a.txt 使用变量名f指代改文件
     with open(r'a.txt','r',encoding='utf-8') as f:
         print(f.read())  # 读取文件内容
            # 这里等价于上面的操作
            # with子代码运行结束之后会自动调用close关闭文件资源
     '''
     with open(文件路径,读写模式,编码格式) as 变量名:
     	子代码块
     文件路径是必须的
     读写你是和编码格式是可选的
     
     '''
     # 如果不指定读写模式 那么默认使用r
    # 如果不指定编码格式 那么默认使用当前计算机内部默认编码
    """在中国所有的windows电脑内部默认的编码是gbk"""
    with open(r'a.txt') as f:
        print(f.read())  # 读取文件内容
    
    
    # 取消转义
    # res = r'D:\day08\a.txt'
    # res1 = r'D:\day08\n.txt'
    # res2 = r'D:\day08\t.txt'
    # print(res,res1,res2)
    
posted @ 2021-06-04 15:31  ccFTD  阅读(38)  评论(0)    收藏  举报