字符编码及文本一

字符编码与文件处理

一、前置知识点:

? 1、程序执行的三大核心硬件(***):
? cpu
? 内存
? 硬盘
? 正常执行一个程序的要点:
? 1、将硬盘中的数据读到内存
? 2、由cpu读内存中的数据进行执行
? 3、在执行程序的时候,生成的数据,优先存入内存

2、python解释器执行一个py文件过程(***)
    如果没有python解释器,py文件单纯就是一个文本文件
    所以说,想执行py文件,必须先执行python解释器

    1、将python解释器的代码有硬盘读到内存
    2、将py文件以普通文本文件的格式由硬盘读到内存
    3、python解释器去内存中读取py文件的数据
    4、识别python语法,执行相应的操作

    ps:任何一个文本编辑器的执行,前两部都一样

二、字符编码:

? 字符:世界上一切语言、文字
? 有必要考虑,图片文件、音频文件、视频文件?

文件的输入和输出是两个过程

人类输入的内容都是人类自己可以识别的字符

计算机只能识别0101010二进制字符

将人类的字符,存入内存和硬盘,要经历一个过程:

人类的字符  >>>>>>>     (字符编码表)    >>>> 计算机二进制

0 a
1 b
01 a
10 b
00 c
11 d

ASCII码表(美国)
    用八位二进制来代表一个英文字符(所有的英文字符+符号一共大概128左右)
        0000 0000
        1111 1111
        最多只能表示255位

    八位二进制 = 8 bit
    8 bit = 1 bytes
    1024bytes = 1KB
    1024KB = 1MB
    1024MB = 1GB
    1024GB = 1TB
    1024TB = 1PB

GBK(中国)
    用2个bytes来代表一个字符,兼容英文字符
    0000 0000 0000 0000
    1111 1111 1111 1111
    最多可以表示65535位

shit(小日子过得不错的日本人)

fuck(韩国的)

万国码(unicode)

为了兼容所有的国家的字符,生成unicode
    所有的字符都用2bytes
    0101 0101 a
    0000 0000 0101 0101 a
    1、占用存储空间
    2、io次数增加,程序运行速度变慢(最致命)

在unicode二进制数据存入硬盘的时候,做优化

utf-8:
    utf-8只与unicode有对应关系
    unicode transformation format

    所有的英文字符用1个bytes表示
    所有的中文字符用3个bytes表示

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

三、结论

需要掌握:
    1、用户无论输入什么字符,存入内存,unicode都可以兼容
    2、硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode

数据的传输:
    优先以自己的本国字符编码进行传递

必须掌握(******)#五星级
    (内存)unicode二进制字符 >>>  编码(encode)  >>> (硬盘)utf-8二进制字符
    (硬盘)utf-8二进制字符  >>>   解码(decode)  >>> (内存)unicode二进制字符

(******)
保证不乱码核心:
    用什么编码存的数据,就用什么编码取

python2 :
    默认的字符编码ascii码(因为当时的unicode还没盛行)
python3:
    默认的字符编码utf-8

文件头:
    # coding:utf-8
    用英文字符,是为了让所有的计算机都可以识别

pycharm默认的字符编码是:
    utf-8
windows操作系统默认字符编码:
    gbk

四、深浅拷贝

import copy
l1 = [257, 'a', [4, 5, 6]]
print(l1)
print(id(l1))
# print(id(l1[0]))
l2 = copy.deepcopy(l1)  # [1, 'a', [4, 5, 6]]
l2[2][0] = 4444
print(l2)
print(id(l2))
print("l1:", l1)
print("id_l1:", id(l1))

这里只需要了解即可,结论就是:
浅copy只是把大框架拿了过来,,而里面的值还是与原来一样,即ID也一样,若改变大框架里面的小列表中的值,copy后小列表中的ID以及原小列表的ID都会改变。
深copy就是不止把大框架拿了过来,而把小框架里的东西都拿了过来,改变小列表中的值,这个小列表的ID会变,而原小列表ID不变。

五、文件处理

1、什么是文件?

操作系统给你提供操作硬盘的一个工具

2、为什么要用文件?

为了满足人类和计算机永久保存数据

3、怎么用文件?

相对路径:必须与当前文件在同一目录

绝对路径:固定的只能在这台电脑操作

4、常用的字符意愿

'r'             以只读方式打开文件(默认)
'w'             以写入的方式打开文件,注意会已存在的文件,即将已有的文件删除
'x'             如果文件已存在,用此方式打开会发生异常
'a'             以写入的方式打开,如果文件存在,会在末尾追加写入
'b'             以二进制打开,主要用于图片,视频
't'             以文本的方式打开
'+'             可以将r+w变成可读写模式
'u'             通用换行符

5、文件处理

f = open("a.txt")

print(f.readable())  # 判断当前文件是否可读
print(f.writable())  # 判断当前文件是否可写

# del f  # 回收变量资源
f.close()  # 回收操作系统的资源

with open('a.txt',mode='r')as rf,        open('a.txt',mode='w')as wf:  # with会自动帮你回收操作系统的资源,无需自己操作
    print(rf.readable())
    print(wf.writable())

# r进行转义
with open(r'D:\项目路径\python13期\day07\a.txt')as f:
    print(f.read())   # 读取文件

6、文件处理模式

with open(r'th.jpg', mode='rb')as rf,        open('xiawuchameilv.png', mode='wb')as wf:
    xiawuchameilv = rf.read()
    wf.write(xiawuchameilv)
"""
打开文件的三种模式:
    r :
        1、只读
        2、如果文件不存在,会报错
    w:(慎用)
        1、只写
        2、如果文件不存在,则新建一个文件写入数据
        3、如果文件内存在数据,会将数据清空,重新写入
    a:
        1、追加写
        2、如果文件内存在数据,会在已有数据的后面追加数据
        3、如果文件不存在,则新建一个文件写入数据
处理文件的模式:
    t
    b
"""

7、文件打开模式

with open(r'a.txt', 'r', encoding='utf-8')as f:
    print(f.readable())
    print(f.read())
    print(f.readline())  # 执行一次,打印一行内容
    print(f.readlines())
    print(f.read())
    print(f.readable())
    print(f.read())
>>>True
亚峰666

[]

True

with open(r'b.txt', 'w', encoding='utf-8')as f:
    f.writelines(["干巴爹\n",'加油'])
>>>干巴爹
   加油

with open(r'aaaaa.txt','a',encoding='utf-8')as f:
    print(f.writable())
    f.write("\n努力,奋斗")
>>>努力,奋斗

原文地址:https://www.cnblogs.com/yafeng666/p/11814109.html

时间: 2024-11-09 09:12:18

字符编码及文本一的相关文章

对字符编码的理解

1.含义 关于人类文明中的语言符号与计算机所认识的0和1之间的一个对应关系表.字符-------通过翻译----------计算机认识的数字.这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码.同一编码规范的不同版本间具有向下兼容性. 2.发展历史 (1)阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCIIASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256

第六篇.字符编码

目录 第六篇.文件处理 1. 计算机基础 2. 文本编辑器存取文件的原理 3. python解释器执行py文件的原理 4. python解释器与文件本编辑的异同 5. 字符编码介绍 5.1什么是字符编码 5.2涉及到字符编码的两个场景 5.3字符编码发展史与分类 5.4内存为什么不用UTF_8呢 5.5字符编码之文本编辑器操作 5.6乱码分析 6. 总结 第六篇.文件处理 1. 计算机基础 2. 文本编辑器存取文件的原理 3. python解释器执行py文件的原理 4. python解释器与文件

2019 08 08 字符编码,文件操作

字符编码 一.计算机基础 cpu: 控制程序的运行(从内存中取出文本编辑器的数据读入内存) 内存: 运行程序(经cpu操作后,内存中含有文本编辑器的数据) 硬盘: 存储数据(文本编辑器) 二.文本编辑器存取文件的原理 ? 计算机只认识 0和1 ? 文本编辑器的作用: 读写数据,保存数据 打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失. 要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上. 在我们编写一个py文件(没有执行)

python学习笔记第四节(字符编码+文本操作+函数)

python中不存在常量这个意义只能用大写命名来说明这个赋值是个常量,实际均为变量 字符编码 内存中是unicode硬盘中是utf-8中间需要转换 python只有执行的时候才有字符编码的概念python2默认ascii码python3默认unicode 文件操作 写操作,w 没有就新建有则覆盖,a是追加 name 查看文件名encoding 查看字符编码 查看是否可读查看是否可写 true false 以文件字符来显示 seek 移动光标位置,以文件起始来读,字节,以0为单位utf-8三个字符

Python之路-python(set集合、文本操作、字符编码 )

一.集合操作(set)                                                                                                                                                                                             1.定义: set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员

python字符编码

1. 字符编码简介 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符 ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符) 后来为了将拉丁文也编码进了ASCII表,将最高位也占用了 阶段二:为了满足中文,中国人定制了GBK GBK:2Bytes代表一个字符 为了满

Windows程序员必须知道的字符编码和字符集

 字符编码 (Character encoding) 在存储和传递文本过程中,为了使得所有电脑都能够正确的识别出文本内容,需要有一个统一的规则. 2. 字符集 (Character Set) ) 一般情况,一种编码方式对应一种字符集.如 ASCII,对应 ASCII 字符集.GBK 编码方式对应 GBK 字符集.但是也有一种编码方式,多种字符集的,Unicode 字符集有多种编码方式,如 utf-8,utf-16 等.  3.  ASCII ASCII(American Standard Cod

字符编码

因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母.数字和一些符号,这个编码表被称为ASCII编

python之----------字符编码具体原理

1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的内容也都是存放在内存中的,断电后数据就丢失了.因而需要保存在硬盘上,点击保存按钮或快捷键,就把内存中的数据保存到了硬盘上.在这一点上,我们编写的py文件(没有执行时),跟编写的其他文件没有什么区别,都只是编写一堆字符而已. 3.python解释器执行py文件的原理,例如python  test.