• Python入门字符编码


    计算机基础知识

    一.应用程序任何操作硬件的请求都需要向操作系统发起系统调用,然后由操作系统去操作硬件

    二.文本编辑器存取文件的原理

      1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放在内存中的,断电数据丢失
      2.要永久保存,需要点击保存按钮:编辑器把内存的数据刷到硬盘上。
      3.在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都是在编写一堆字符而已。

    三:python解释器执行py文件的原理

      第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器
      第二阶段:python解释器相当于文本编辑器,去打开test.py的代码,从硬盘上将test.py的文本内容读到内存中
      第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码,从硬盘上将test.py代码

    四:总结python解释器与文件本编辑的异同

      1.相同点:python解释器是执行文件内容的,因而python解释器具备读py文件的功能,功能,这一点与文本编辑器一样
      2.不同点:文本编辑器将文件读入内存后,是为了显示或者编辑,根本不会理会python的语法,而python解释器将文件内容读入内存后,开始执行python代码、识别python语法。
    字符编码 

    一.什么是字符编码 

    过程:
    字符-----(翻译过程)----->数字
    这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码

    二.以下两个场景下涉及到字符编码的问题:

      1.一个python文件中的内容是由一堆字符组成的,存取均涉及到字符编码问题
      2.python中的数据类型字符串是由一串 字符组成的

    三.字符编码发展的三个阶段

      阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII
      阶段二:为了满足中文和英文,中国人制定了GBK
      阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码
      1.能够兼容万国字符
      2.与全世界所有的字符编码都有映射关系,这样就可以转换成任意国家的字符编码
    总结:内存中统一采用Unicode,浪费空间来换取可以转换成任意编码(不乱码),硬盘可以采用各种编码,如utf—8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。

    # coding:gbk
    x = "" # 文件头指定的编码,即gbk格式的二进制
    print(type(x))
    --><class 'str'>
    x = u"" # 存成unicode格式的二进制
    print(x,type(x))
    -->上 <class 'str'>
    print(x)
    -->上
    x = u""
    print([x,])
    -->['']
    res=x.encode('gbk')
    print([res,])
    -->[b'xc9xcf']
    
    x = "" # 在python3中,存成unicode格式的二进制
    print(type(x))
    
    res1=x.encode('utf-8')
    print(res1,type(res1))
    
    unicode----------encode---------->gbk二进制
    res2=x.encode('gbk')
    print(res2,type(res2))
    
    gbk二进制---------decode---------->unicode
    print(res2.decode('gbk'))
    
    open(r'D:SH_fullstack_s3day07a.txt')
    f=open(r'a.txt',encoding='utf-8') #向操作系统发送请求,要求操作系统打开文件
    
    print(f) # f的值是一个文件对象
    print(f.read())
    
    f.close() # 向操作系统发送请求,要求操作系统关闭打开的文件
    print(f)
    f.read()

    强调:一定要在程序结束前关闭打开的文件

    # 上下文管理with
    with open(r'a.txt',encoding='utf-8') as f,
    open('b.txt',encoding='utf-8') as f1:
    print(f.read())
    print(f1.read())

    文件处理介绍

    一 文件的打开模式

    r: 只读模式L(默认的)
    w: 只写模式
    a: 只追加写模式

    二 控制读写文件单位的方式(必须与rwa连用)

    t : 文本模式(默认的),一定要指定encoding参数
    优点: 操作系统会将硬盘中二进制数字解码成unicode然后返回
    强调:只针对文本文件有效

    b: 二进制模式,一定不能指定encoding参数

    with open('a.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()
    print(data,type(data))
    
    
    with open('1.png',mode='rt',encoding='utf-8') as f:
    data=f.read()
    
    with open('1.png',mode='rb',) as f:
    data=f.read()
    print(data,type(data))
    
    with open('a.txt',mode='rb',) as f:
    data=f.read()
    # print(data,type(data))
    print(data.decode('utf-8'))
    
    with open('a.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()
    print(data)

    一 r: 只读模式L(默认的)

     

      1 当文件不存时,会报错
      2 当文件存在时,文件指针指向文件的开头

    with open('a.txt',mode='rt',encoding='utf-8') as f:
    res1=f.read()
    print('111===>',res1)
    res2=f.read()
    print('222===>',res2)
    
    print(f.read())
    print(f.readable())
    print(f.writable())
    print(f.readline())
    print(f.readline())
    
    for line in f:
    print(line)
    
    l=[]
    for line in f:
    l.append(line)
    print(l)
    print(f.readlines())

    二 w: 只写模式

      1 当文件不存时,新建一个空文档

      2 当文件存在时,清空文件内容,文件指针跑到文件的开头

    with open('c.txt',mode='wt',encoding='utf-8') as f:
    print(f.readable())
    print(f.writable())
    print(f.read())
    
    f.write('哈哈哈
    ')
    f.write('你愁啥
    ')
    f.write('瞅你咋地
    ')
    
    f.write('1111
    2222
    333
    4444
    ')
    
    info=['egon:123
    ','alex:456
    ','lxx:lxx123
    ']
    for line in info:
    f.write(line)
    f.writelines(info)
    
    with open('c.txt',mode='rb') as f:
    print(f.read())
    
    
    with open('c.txt',mode='wb') as f:
    f.write('哈哈哈
    '.encode('utf-8'))
    f.write('你愁啥
    '.encode('utf-8'))
    f.write('瞅你咋地
    '.encode('utf-8'))

    三 a: 只追加写模式

      1 当文件不存时,新建一个空文档,文件指针跑到文件的末尾

      2 当文件存在时,文件指针跑到文件的末尾

    with open('c.txt',mode='at',encoding='utf-8') as f:
    print(f.readable())
    print(f.writable())
    f.read()
    
    f.write('虎老师:123
    ')
  • 相关阅读:
    【杂谈】需要mark的一些东西
    【codeforces】940F题解
    【codeforces】【比赛题解】#940 CF Round #466 (Div. 2)
    【FCS NOI2018】福建省冬摸鱼笔记 day6【FJOI 2018】福建省选混分滚蛋记 day1
    【FCS NOI2018】福建省冬摸鱼笔记 day5
    【FCS NOI2018】福建省冬摸鱼笔记 day4
    【FCS NOI2018】福建省冬摸鱼笔记 day3
    【FCS NOI2018】福建省冬摸鱼笔记 day2
    【FCS NOI2018】福建省冬摸鱼笔记 day1
    【6】装饰器、闭包、偏函数、变量作用域问题
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/10235033.html
Copyright © 2020-2023  润新知