博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
07 字符编码 字符与字节 文件操作
阅读量:7280 次
发布时间:2019-06-30

本文共 2681 字,大约阅读时间需要 8 分钟。

字符编码

人识别的语言与机器识别的语言转化的媒介 *****

重点

1. 什么是字符编码  人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流所需要的媒介
 两种标识符转化的对应关系形成的结构,称之为编码表 2. 常用的编码表:ascii、unicode、GBK、Shift_JIS、Euc-kr   
了解:编码表的发展史
1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系   思考:如何将128个字符用01完全标签   二进制:11111111 => 255 => 1bytes(1字节) => 8个二进制位 2.中国:研究汉字与计算机01标识符的对应关系:gb2312 => GBK(***) => GB18030   日本:Shift_JIS   韩国:Euc-kr 3. 制造一个可以完成万国字符与计算机01标识符的对应关系的编码表   编码表:unicode表   py2:ascii,没有按万国编码,原因py2诞生先于万国编码   py3: utf-8, 采用万国编码来解释文本内容
3. 编码操作:编码encode()、解码decode()

知识储备

电脑三大核心:cpu - 内存 - 硬盘(数据的存取过程) 软件及python解释器读取文件过程:启动 - 读取 - 展示|解释执行 python2环境的文件头:# coding: 编码格式

简介与发展

1. ascii - 各国编码 - 万国编码 2. 存取不一致的乱码现象 3. unicode与utf-8   思考:unicode与utf-8什么关系
编码类型 存储汉字 存储英文字母 占有空间 读取效率
unicode 2字节 2字节 较多(编码多为英文) 极高
utf-8 3-6字节 1字节 较少
  总结:内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据   unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据   变长优点:(大量数据都是以英文存在,所以utf-8空间更小)传输速度更快

核心

编码操作:编码encode()、解码decode()
s = '123呵呵'n_b = bytes(s, encoding='utf-8')print(n_b)b = b'123\xe5\x91\xb5\xe5\x91\xb5'n_s = str(b, encoding='GBK')print(n_s)
重点:***** 将u字符串编码成b字符串   print(u'你好'.encode('utf-8')) 将b字符串解码成u字符串   print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))

字符与字节

字符占多少字节,字符串转化 ***

重点

1. 字节的存储方式:8个二进制位 2. 字符所占字节数:根据编码的不同,所占字节数可能不同 3. 三种格式字符串:u''、b''、r''
  • unicode字符串,默认字符串

    s1 = u'abc你好\n不好'

    print(s1)

  • 字节字符串

    s2 = b'abc123\xb7\xb7'

    print(s2)

  • 原义字符串: 不对字符串内存做任何操作(eg:\n的转化)

    s3 = r'abc你好\n不好'

    print(s3)

了解

u、b格式字符串转换:   str(b'', encode='utf-8')   bytes(u'', encode='utf-8') 

文件操作

文件:硬盘中的一块存储空间(虚拟的文件)  ***** 文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write 

重点

1. 文件操作的三步骤:打开文件 - 使用文件 - 关闭文件
# 1、打开文件# 变量名 = 文件空间# 文件路径 操作模式(读|写) 编码f = open('a.txt', 'r', encoding='utf-8')# 2、操作文件data = f.read(3)  # 将所有内容读取出来,如果设置读取长度,按照规定长度读取数据print(data)# 一次读取一行line = f.readline()print(line)line = f.readline()print(line)# 按行一次性全部读出lines = f.readlines()print(lines)# 逐步一行一行读取l = []for line in f:    print(line)    l.append(line)print(l)s = set()for line in f:    print(line)    s.add(line)print(s)# 3、关闭文件f.close()  # 释放操作系统对文件的持有,变量f还被应用程序持有# del f  # 系统自动回收print(f)

 2. 文件操作三要素:文件源、操作模式、编码

 3. with语法:with open(...) as 别名, ..., open(...) as 别名: pass
 4. 重点方法:read() | write() | readline() | close() | f.flush() | f.seek()

操作模式

主模式:r:读 | w:写 | a:追加 从模式:b:按字节操作 | t:按字符操作 | +:可读可写 了解:x:异常写 | U:被遗弃了
基础写 文件不存在:会新建文件,再操作文件 文件存在:先清空文件,再操作文件
w = open('b.txt', 'w', encoding='utf-8')w.write('456')w.close()print('end')

 

 

操作方法

读:read() | readline() | readlines() 写:write() | writelines() | flush() 光标:seek() | tell() 特征:encoding | closed ​ 了解:readable() | writable() | name

案例

1. 文件复制 2. 文件修改 ​ 了解:py文件脚本机制

转载于:https://www.cnblogs.com/zhouyongv5/p/10599581.html

你可能感兴趣的文章
sql server 2005 32位+64位、企业版+标准版、CD+DVD 下载地址大全
查看>>
Android中Application类用法
查看>>
(转)C#_WinForm接收命令行参数
查看>>
Java Web系列:JDBC 基础
查看>>
ZOJ 3822 Domination(概率dp 牡丹江现场赛)
查看>>
Atitit.导出excel报表的设计与实现java .net php 总结
查看>>
C3P0在多线程下的maxPoolSize配置
查看>>
二叉树(10)----比較两个二叉树是否同样(结构和数据),递归和非递归
查看>>
ViewController 视图控制器
查看>>
Android自定义控件
查看>>
第十三章 ThreadPoolExecutor源码解析
查看>>
I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor
查看>>
docker 学习手冊-中文版下载
查看>>
apache tomcat 集群! (转)
查看>>
【ZOJ 1221】Risk
查看>>
【笔记】一些linux实用函数技巧【原创】
查看>>
数据结构图文解析之:二分查找及与其相关的几个问题解析
查看>>
arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现
查看>>
php框架的制作原理
查看>>
【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之四】使用绑定C++至Lua的自己定义类...
查看>>