zoukankan      html  css  js  c++  java
  • 字符编码和文件处理

    文件处理

    字符编码

    一丶计算机基础

    046-字符编码-计算机基础.png?x-oss-process=style/watermark

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

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

    1.打开了编辑器就打开了启动了一个进程,是在内存中的,所以,用编 辑器编写的内容也都是存放与内存中的,断电后数据丢失。

    2.要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘 上。

    3.在我们编写的一个py文件(没有执行),跟编写其他文件没有任何 区别,都只是在编写一堆字符而已。

    三丶Pyhthon解释器执行py文件的原理

    ~第一阶段:Python解释器启动,此时就相当于启动了一个文本编辑 器。

    ~第二阶段:Python解释器相当于文本编辑器,去打test.py文件,从 一ing盘上将test.py文件,从硬盘上将test.py文件内容读入到内中。

    ~第三阶段:Python解释器解释执行刚刚加载到内存中的test.py的代 码。(ps:在该阶段,即真正执行代码时,才 会识别python的语 法,执行文件内代码,当执行到name= 'egon'时,会开辟内存空间 存放字符串"egon")

    四丶 Python解释器与文件本编辑的异同

    ~相同点:Python解释器是解释执行文件内容的,因而Python解释器 具备读py文件的功能,这一点与文本编辑器一样。

    ~不同点:文本编辑器将文件内容读入内存后,是为了显示或编辑,根 本不会理会Python的语法,而Python解释器将文件内容读入内存后 ,可不是为了给你瞅一眼Python代码写的啥,而是为了执行Python 代码、会识别Python语法。

    五丶编码

    ~Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种 语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有字 符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536, 注:此处说的的是最少2个字节,可能更多.

    ~utf-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节 节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节 保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存.

    046-字符编码-utf8与Unicode转换.png?x-oss-process=style/watermark

    字符按照什么标准而编码的,就要按照什么标准解码。

    用什么代码编写就用什么代码打开。

    Python2和3字符编码的区别

    python2默认的解释器编码ascii
    python3默认的解释器编码utf-8

    文件的三种打开方式

    r:只读

    f.read()

    w:清空后写入(文件不存在自动创建)

    f.weite()

    a:追加(文件不存在自动创建)

    f.write()

    文本模式:t

    二进制模式:b

    t/b无法单独使用,只能和r/w/a一起使用

    with管理文件上下文

    with open() as f: # 自动关闭

    pyinstaller的使用

    pip instal pyinstaller

    切换路径到文件夹(文件夹包含img.ico和test.py这两个文件)

    pyinstaller -i img.ico -F test.py

    文件的高级应用

    打开的高级模式

    1. r+:可读可写,指针文件末

    2. w+:可读可写,清空文件(极力不推荐)

    3. a+ :可读可写

    文件的高级方法

    1. seek: 单位字节
    2. tell:单位字节
    3. read(n):单位字节
    4. truancate : 单位字节

    用 rb 模式

    ```python
    # with open('test.py', 'rb') as fr:
        # fr.seek(1, 0)  # 0是从文件头开始,走1个字节
        # fr.seek(1, 1)  # 1是从当前位置开始,走1个字节
        # fr.seek(1, 2)  # 2是从文件末开始,走1个字节
        # fr.seek(0, 2)  # 2是从文件末开始,走1个字节  # 定位到文件末尾
        # print(f'fr.tell():{fr.tell()}')  # 告诉你当前指针的位置
        # print(fr.read())  # 中 --> xe4xb8xad
    
    
    # with open('test.py', 'a+b') as fa:
    #     fa.truncate(1)
    
    
    with open('test.py', 'rt',encoding='utf8') as fr:
        print(fr.read(3))  # 3个字符
    ```
    

    文件的还原方法

    Local history

    修改文件的两种方式

    文件没有修改这一说,只有覆盖。

    with open ('tset.py','r+',endcoding='utf8') as fr:
        fr.seek(3)
        fr.write('中')
        fr.flush()   #如果不加flush短暂的停留在内存中,然后再刷入硬盘。
    			#如果加了会更快速刷入硬盘       
    
    with open ('tset.py','r',encoding='utf8') as fr,
    		open('tset_swap.py','w',encoding='utf8') as fw:
           data = fr.read()
      	   data = data.repalce('sb','dsb')
      	   fw.write(data)
      	   
      	   import os
      	   
      	   os.remove('tset.py')
      	   os.remove('tset_swap.py','test.py')
    
  • 相关阅读:
    数据库数据带&符号 导入有问题的处理办法
    JS获得一个对象的所有属性和方法
    escape()、encodeURI()、encodeURIComponent()区别详解
    九度oj 题目1473:二进制数(stack)
    九度oj 题目1066:字符串排序
    九度oj 题目1049:字符串去特定字符
    九度oj 题目1045:百鸡问题
    九度oj 题目1048:判断三角形类型
    九度oj 题目1050:完数
    九度oj 题目1053:互换最大最小数
  • 原文地址:https://www.cnblogs.com/shiqizz/p/11355017.html
Copyright © 2011-2022 走看看