字符编码和文件处理

文件处理

字符编码

一丶计算机基础

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())  # 中 --> \xe4\xb8\xad


# 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')
posted on 2019-08-14 22:05  十七zz  阅读(142)  评论(0编辑  收藏  举报