DAY7 字符编码和文件操作
一.软件与python解释器打开文件的方法
1.软件打开文件读取数据的流程:
1. 打开软件
2. 往计算机发生一个打开文件的指令,来打开文件
3. 读取数据渲染给用户(存取编码不一致:乱码)
2.python解释器打开py文件
1. 打开软件(python解释器)
2. 往计算机发生一个打开文件的指令,来打开文件
3. 逐行解释打开的文件内容(存取编码不一致,无法正常解释,崩溃),将执行结果展示给用户
3.python2与python3解释器区别
py2默认按ASCII来解释文件内容 | py3默认按UTF-8来解释文件内容,要打开其他编码文件需要加文件头
3.1文件头:# encoding: 编码表
功能:告诉py解释器按照什么编码来解释文件内容
二.字符编码
1.什么是字符编码
人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,
一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系)
2.编码表
两种标识符的对应关系形成的结构称之为:编码表
3.编码表的发展史
1. ascii(ASCII):字母、数字、英文符号与计算机01标识符的对应关系
1.1 如何将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, 采用万国编码来解释文本内容
4.unicode与utf-8什么关系
unicode:用2个字节来存储汉字,用2个字节来存储英文字母,占有空间较多,读取效率极高
utf-8:用3-6个字节来存储汉字,用1个字节来存储英文字母,占有空间较少,读取效率低
总结:内存都是按unicode存储数据,硬盘和cpu采用utf-8来存取数据
unicode与utf-8采用的是一张unicode编码表,utf-8是unicode编码表体现方式,变长存储数据
三.解码与编码
1.三种字符串
1.1 unicode字符串,默认字符串
s1 = u'abc你好\n不好'
print(s1) # abc你好
不好
1.2 字节字符串
s2 = b'abc123\xb7\xb7'
print(s2) # b'abc123\xb7\xb7'
1.3 原义字符串: 不对字符串内存做任何操作(eg:\n的转化)
s3 = r'abc你好\n不好'
print(s3) # abc你好\n不好
2.编码与解码(*****)
2.1 将u字符串编码成b字符串
print(u'你好'.encode('utf-8'))
2.2将b字符串解码成u字符串
print(b'\xe4\xbd\xa0\xe5\xa5\xbd'.decode('utf-8'))
四.文件操作
1.文件定义
文件:硬盘中一块存储空间(虚拟的文件)
文件操作:根据文件名来操作硬盘的那块存储空间,操作方式 读read 写write
2.文件操作步骤
1. 打开文件
变量名 = 文件空间
文件路径 操作模式(读|写) 编码
2. 操作文件(读:read() 写:write())
3. 关闭文件 *****
3.操作模式
主模式:r:读 | w:写 | a:追加
从模式:b:按字节操作 | t:按字符操作 | +:可读可写
了解:x:异常写 | U:被遗弃了
4.读文件基础
f = open('a.txt', 'r', encoding='utf-8') # 打开文件
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)
f.close() # 关闭文件,释放操作系统对文件的持有,变量f还被应用程序持有
5.基础写
# 文件不存在:会新建文件,再操作文件
# 文件存在:先清空文件,再操作文件
w = open('b.txt', 'w', encoding='utf-8') # 打开文件
w.write('456') # 写入‘456’到内存
w.close() # 从内存写入文件,关闭文件
DAY7 字符编码和文件操作的更多相关文章
- Python-字典、集合、字符编码、文件操作整理-Day3
1.字典 1.1.为什么有字典: 有个需求,存所有人的信息 这时候列表就不能轻易的表示完全names = ['stone','liang'] 1.2.元组: 定义符号()t = (1,2,3)tupl ...
- Python之字符编码与文件操作
目录 字符编码 Python2和Python3中字符串类型的差别 文件操作 文件操作的方式 文件内光标的移动 文件修改 字符编码 什么是字符编码? ''' 字符编码就是制定的一个将人类的语言的字符与二 ...
- python学习道路(day3note)(元组,字典 ,集合,字符编码,文件操作)
1.元组()元组跟列表一样,但是不能增删改,能查.元组又叫只读列表2个方法 一个 count 一个 index2.字典{}字典是通过key来寻找value因为这里功能比较多,所以写入了一个Code里面 ...
- Python 字符编码及其文件操作
本章节内容导航: 1.字符编码:人识别的语言与机器机器识别的语言转化的媒介. 2.字符与字节:字符占多少个字节,字符串转化 3.文件操作:操作硬盘中的一块区域:读写操作 注:浅拷贝与深拷贝 用法: d ...
- Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作
本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...
- DAY07、字符编码和文件操作
一.字符编码 1.什么是字符编码? 人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流, 一定需要一个媒介,进行两种标识符的转化(两 ...
- Day 07 字符编码,文件操作
今日内容 1.字符编码:人识别的语言与机器识别的语言转换的媒介 2.字符与字节:字符占多少字节,字符串转换 3.文件操作:操作硬盘的一块区域 字符编码 重点:什么是字符编码 人类能识别的字符等高级标识 ...
- Python 入门基础6 --字符编码、文件操作1
今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...
- Python基础之字符编码,文件操作流与函数
一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...
随机推荐
- Ps去除背景
http://www.16xx8.com/photoshop/jiaocheng/26905.html
- Java ee第三周作业
listener: Listener是JavaWeb的三大组件Servlet.Filter.Listener之一 Listener的中文名称为监听器,它是Servlet的监听器,它可以监听客户端的请求 ...
- 智能门锁测试程序和PCB板线路通断检测程序经验总结
这次去WZ出差,还是很累的,之前一年多没有搞嵌入式了,更重要的是之前没有接触太深刻GPIO的用法等等原因,导致很心累. 必须掌握的技能: (1)SPI和IIC总线,模拟和专用外设两种方式,他们的重要性 ...
- 16.4-uC/OS-III同步 (任务信号量)
信号量和消息队列均是单独的内核对象,是独立于任务存在的. 任务信号量 仅发布给一个特定任务 .任务消息队列 可以发布给多个任务. 任务信号量伴随任务存在,只要创建了任务,其任务信号量就是该任务的一个数 ...
- python框架之Flask(2)-路由和视图&Session
路由和视图 这一波主要是通过看源码加深对 Flask 中路由和视图的了解,可以先回顾一下装饰器的知识:[装饰器函数与进阶] 路由设置的两种方式 # 示例代码 from flask import Fla ...
- Java基础(变量数&常量&据类型&类型转换)
什么是变量: 变量就是一个不固定的数值,它随时会改变,就像银行卡里存的钱一样会变动. 变量的格式:1 数据类型 变量名=变量值: 2 数据类型 变量名: 变量名=变量值: 变量的三大要素:1变量 ...
- 正则表达式(re模块)
s='hello world' print(s.find('llo')) #找到llo ret=s.replace('ll','xx') #用xx代替ll print(ret) print(s.spl ...
- vim格式化markdown表格
title: vim格式化markdown表格 date: 2017-11-23 15:23:25 tags: vim categories: 开发工具 安装插件 https://github.com ...
- 把ArrayList集合中的字符串内容写到文本文件中
list列表数据导出到指定路径文本文档中 public String getSDCardPath() { String sdCard = Environment.getExternalStorage ...
- 【转】Jira插件安装
一.Jira插件列表(可以将下面免费插件直接下载,然后登陆jira,在"插件管理"->"上传插件",将下载后的免费插件直接进行上传安装即可) 序号 插件名 ...