zoukankan      html  css  js  c++  java
  • 上海day7--字符编码和文件的基本操作类型

    目  录

    一、前提知识

    二、字符编码 *****

    三、文件的基本操作类型

    一、前提知识

    1、运行程序的三个核心硬件:

      cpu 、内存 、硬盘

      任何一个应用程序想要运算,必须先从硬盘加载到内存,然后CPU从内存取指执行。

    2、Python解释器运行一个py文件(xxx.py)的三个步骤:

      先将Python解释器代码从硬盘读到内存;

      将xxx.py以普通文本文件的形式读到内存;

      Python解释器读取文件,识别Python语法,执行操作。

    二、字符编码

    1、字符编码针对的只是文字,像图片、音频、视频等都有指定的格式,所以不需要字符编码。字符编码只与文本文件有关。

    2、文本编辑器的输入输出是两个过程:

      人在操作计算机时输入的是人能够看懂的字符,计算机只能看懂01二进制数字,所以需要一个转变的过程

      输入的字符             >>>( 字符编码表)>>>    二进制数字

    3、字符编码表就是字符与数字的对应关系。

    字符编码表的发展历史:

      ASCII码表:用8位二进制数字表示一个英文字符。

        0000 0000  ~ 1111 1111

      GBK:中国发明的,统一用2个Bytes表示一个中文字符,1个Bytes表示一个英文字符。

        0000 0000 0000 0000

        对应于中国人发明的gbk编码格式,各国都有各自的编码格式,如日本的shift 韩国的 fuck

      Unicode 万国码:统一用2Bytes表示所有的字符。

        缺点:1、浪费存储空间   (英文字符为例,原本1个字节就可以表示,现在用两个字节表示,存储空间加倍)

           2、IO次数增减,程序运行效率降低(致命!)-- 因为文件变大,加载过程会变慢,所以程序运行效率会变低。

    当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码
    unicode transformation format
    
    会将unicode的英文字符由原来的2Bytes变成1Bytes
    会将unicode中文字符由原来的2Bytes变成3Bytes

    注意:现在的计算机内存都是unicode,硬盘都是utf-8。

    需要掌握的

    unicode的两个特点
        1.用户在输入的时候,无论输什么字符都能够兼容万国字符
        2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系 

    必须要掌握的

    数据由内存保存到硬盘
        1.内存中的unicode格式二进制数字    >>>>编码(encode)>>>>>              utf-8格式的二进制数据
        
        硬盘中的数据由硬盘读到内存
        1.硬盘中的utf-8格式的二进制数据    >>>>>解码(decode)>>>>>             内存中unicode格式的二进制数据
    ***** 重点:保证不乱码的规则 ----文本文件用什么编码编的就用什么编码去解。

    ******Python2 与Python3 的区别:
    python2
        将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)
    python3    
        将py文件按照文本文件读入解释器中默认使用utf-8 

    文件头:

    # coding:utf-8    
        1.因为所有的编码都支持英文字符,所以文件头才能够正常生效
        
    基于Python解释器开发的软件,只要是中文,前面都需要加一个u
    为了的就是讲python2(当你不指定文件头的时候,默认用ASCII存储数据,如果指定文件头那么就按照文件头的编码格式存储数据)
           
    python3中字符串默认就是unicode编码格式的二进制数
    

      补充:

    1.pycharm终端用的是utf-8格式
    2.windows终端采用的是gbk

     字符编码总结 —— 最终的结论:

    x = ''
    res1 = x.encode('utf-8')  # 将unicode编码成可以存储和传输的utf-8的二进制数据
    print(res1)  # b'xe4xb8x8a'
    # bytes类型  字节串类型  你就把它当成二进制数据即可
    res2 = res1.decode('utf-8')  # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
    print(res2)

    三、文件的基本操作

    文件的处理:

    1、文件的定义:

    什么是文件?
        操作系统提供给用户操作复杂硬件(硬盘)的简易的接口
    
    为什么操作文件
        人或者应用程序需要永久的保存数据

    2、代码操作文件的两种方式

       第一种:

    # r取消转义
    f = open(r'D:Python项目day07a.txt',encoding='utf-8')  # 向操作系统发送请求  打开某个文件
    # 应用程序要想操作计算机硬件 必须通过操作系统来简介的操作
    print(f)  # f是文件对象
    print(f.read())  # windows操作系统默认的编码是gbk
    f.read()  # 向操作系统发请求 读取文件内容
    f.close()  # 告诉操作系统 关闭打开的文件
    print(f)
    print(f.read())

            第二种:文件上下文操作

    with open(r'D:Python项目day07a.txt',encoding='utf-8') as f ,
            open(r'D:Python项目day07.txt',encoding='utf-8') as f1:  # f仅仅是一个变量名 你把它看成是一个遥控器
        print(f)
        print(f.read())
        print(f1)
        print(f1.read())

    文件的处理模式

    文件打开的模式:

      r 模式    w模式       a 模式

    操作文件单位的方式:

      t 文本文件 : t 在使用的时候要指定encoding 参数,如果不指定就是操作系统自带的默认编码方式

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

    # mode参数 可以不写  不写的话默认是rt 只读的文本文件  这个t不写默认就是t
    with open(r'D:Python项目day07a.txt',mode='r',encoding='utf-8') as f:
        print(f.readable())  # 是否可读
        print(f.writable())  # 是否可写
        print(f.read())  # 一次性将文件内容全部读出

     r 模式:

      r模式在打开文件时,如果文件不存在会直接报错;可以写相对路径也可以写绝对路径,但相对路径要在同一层文件下。

    with open(r'a.txt',mode='r',encoding='utf-8') as f:
    with open(r'a.txt','r',encoding='utf-8') as f1:  mode关键字可以不写
        print(f.readable())  # 是否可读
        print(f.writable())  # 是否可写
        print(">>>1:")
        print(f.read())  # 一次性将文件内容全部读出
        print('>>>2:')
        print(f.read())  # 读完一次之后 文件的光标已经在文件末尾了,再读就没有内容了可读
        print(f.readlines())  # 返回的是一个列表  列表中的一个个元素对应的就是文件的一行行内容
        for line in f:  # f可以被for循环 每for循环依次 读一行内容
            print(i)  # 这个方法 就可以解决大文件一次性读取占用内存过高的问题
        print(f.readline())  # 只读取文件一行内容
        print(f.readline())
        print(f.readline())
        print(f.readline())
    View Code

    w模式:

      w模式一定要慎用:

        当文件不存在的时候会新建文件;

        当文件存在的时候会先清空在写入内容。

    a模式:

      a模式是追加写模式:

        当文件不存在的时候,会新建文件;

        当文件存在的时候,不会清空文件,鼠标的光标会在移动到文件的最后,再添加写入内容。

  • 相关阅读:
    移动MM首届手机软件设计及创意大赛决赛取得圆满成功
    Windows Phone 7 EKB系列文章发布
    EVC3/4项目升级到Visual Studio项目的一些建议
    Windows Phone SDK 7.1 RTM 发布
    Howto: 创建Windows Phone 7自定义控件
    风云再起,7迹由你WP7技术沙龙上海站第二次活动
    Windows Phone Dev Notes如何使用ConnectionSettingsTask 来启动连接设置页面
    【OneNote Mobile】 如何处理便签内容的格式?
    《101 Windows Phone 7 Apps》读书笔记PASSWORDS & SECRETS
    3年MVP路,一颗感恩的心
  • 原文地址:https://www.cnblogs.com/qinsungui921112/p/11139694.html
Copyright © 2011-2022 走看看