python文件操作:字符编码与文件处理
本文目录:
一、字符编码
储备知识点
1. 计算机系统分为三层:
应用程序
操作系统
计算机硬件
2. 运行python程序的三个步骤
1. 先启动python解释器
2. 再将python文件当作普通的文本文件读入内存
3. 解释执行读入内存的代码,开始识别语法
字符编码
1. 什么是字符编码
字符编码表: 人类的字符<------------>数字 1Bytes=8bit
1B=8b 1字节等于8个二进制位 ASCII码:只能识别英文字符,1英文字符=8bit
用8个二进制bit(比特位)位表示一个英文字符 GBK:能识别汉字与英文,1汉字=16bit,1英文字符=8bit
Shift_JIS
Euc-kr unicode:能够识别万国字符,1字符=2Bytes=16bit
两大特点:
1. 能够兼容万国字符
2. 与各个国家的字符编码都有映射关系
utf-8:是unicode的转换格式,1个英文字符=1Bytes 1汉字=3Bytes
重点理论:
1 编码与解码:
字符---编码-->unicode的二进制-------编码----->GBK的二进制
GBK的二进制-----解码-->unicode的二进制----解码->字符 2\ 解决乱码问题的核心法则:
字符用什么编码格式编码的,就应该用什么编码格式进行解码 3\ python解释器默认的字符编码
python2:ASCII
python3:UTF-8 通过文件头可以修改python解释器默认使用的字符编码
在文件首行写:#coding:文件当初存的时候用的字符编码 针对python2解释器中定义字符串应该:
x=u"上"
对于python3解释即便是x="上"不加u前缀也是存成unicode 在python3中
x='上' # '上'存成了uncidoe unicode--------encode----------->gbk
res=x.encode('gbk') #res是gbk格式的二进制,称之为bytes类型 gbk(bytes类型)-------decode---------->unicode
y=res.decode('gbk') #y就是unicode
关于字符编码的操作:
1. 编写python文件,首行应该加文件头:#coding:文件存时用的编码
2. 用python2写程序,定义字符串应该加前缀u,如x=u'上'
3. python3中的字符串都是unicode编码的,python3的字符串encode之后可以得到bytes类型
2. 为何字符要编码
人类与计算机打交道用的都是人类的字符,而计算机无法识别人类的字符,只能识别二进制,所以必须将人类的字符编码成计算机能识别的二进制数字.
二、文件处理
什么是文件
文件是操作系统提供给用户/应用程序的一种虚拟单位,该虚拟单位直接映射的是硬盘空间
为何要处理文件
用户/应用程序直接操作文件(读/写)就被操作系统转换成具体的硬盘操作,从而实现
用户/应用程序将内存中的数据永久保存到硬盘中
如何用文件
# 文件处理的三个步骤
# f=open(r'c.txt',mode='r',encoding='utf-8') # 文件对象(应用程序的内存资源)------》操作系统打开的文件(操作系统的内存资源)
# # print(f)
# data=f.read()
# f.close() # 向操作系统发送信号,让操作系统关闭打开的文件,从而回收操作系统的资源 # 上下文管理
# with open(r'c.txt',mode='r',encoding='utf-8') as f,open(r'b.txt',mode='r',encoding='utf-8') as f1:
# 读写文件的操作
# pass # 文件的打开模式:r(默认的) w a
# 操作文件内容的模式:
# t(默认的):操作文件内容都是以字符串为单位,会自动帮我们解码,必须指定encoding参数
# b: 操作文件内容都是以Bytes(二进制)为单位,硬盘中存的是什么就取出什么,一定不能指定encoding参数
# 总结:t模式只能用于文件本文件,而b模式可以用于任意文件 # r模式:只读模式,在文件不存在时则报错,如果文件存在文件指针跳到文件的开头
# with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# print(f.read())
# print(f.readable())
# print(f.writable())
# f.write('hello') # 只能读 # data=f.read()
# print(data,type(data)) # with open(r'c.txt',mode='rb') as f:
# data=f.read()
# # print(data,type(data))
# res=data.decode('utf-8')
# print(res) # with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# # line=f.readline()
# # print(line,end='')
# # line1=f.readline()
# # print(line1,end='')
# # line2 = f.readline()
# # print(line2,end='')
#
# lines=f.readlines()
# print(lines)
# with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# line=f.readline()
# print(line,end='') # 循环读文件内容的方法:
# with open(r'c.txt',mode='rt',encoding='utf-8') as f:
# for line in f:
# print(line,end='')
python文件操作:字符编码与文件处理的更多相关文章
- python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
- Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作
本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...
- Python基础之字符编码,文件操作流与函数
一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...
- python 基础之字符编码和文件处理
一.字符编码 (1)计算机基础知识 (2)python 解释器执行py文件的原理 <1>python 解释器启动 <2>python解释器相当于一个文本编辑器,打开txt.py ...
- python学习day9 字符编码和文件处理
1.字符编码 x='上' #unicode的二进制--------->编码-------->gbk格式的二进制 res=x.encode('gbk') #bytes 字节类型 print( ...
- Python自动化开发 - 字符编码、文件和集合
本节内容 字符编码 文件操作 集合 一.字符编码 1.编码 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.解决思路:数字与符号建立一对一映射,用不同数字表示不同符号. ASCI ...
- Python入门基础--字符编码与文件处理
字符编码 文本编辑器存取文件的原理 #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失 #2.要想永久保存,需要点击保存按钮:编辑器把内 ...
- python数据类型、字符编码、文件处理
介绍: 1.什么是数据? 例:x=10,10是我们要存储的数据 2.为何数据要分不同的类型? 数据是用来表示状态的,不同的状态用不同的类型的数据去表示 1.数据类型 1.数字(整形,长整形,浮点型,复 ...
- 二、python数据类型、字符编码、文件处理
一. 前言 1. 什么是数据: x = 10,10就是我们要存储的数据 2. 为何数据要分不同的类型 数据是用来表示状态的, 不同的状态就应该用不同类型的数据去表示 3. 数据类型 数字(整型.长整型 ...
- python数据类型、字符编码、文件处理-练习
练习-字符串 # 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分) name = " aleX" # ) 移除 name 变量对应的值两边的空格,并输出处理 ...
随机推荐
- 使用STM32F103ZET霸道主板实现LCD显示屏显示
简单了解液晶显示屏 液晶显示屏LCD是靠背光LED发光,然后经过横竖透光,每个点电压可以改变光线的方向,总之能改变透光度0-100%,最后就是每个像素点对应红绿蓝RGB,RGB各自的亮度不同,组成的颜 ...
- Hadoop 部署之 Spark (六)
目录 一.Spark 是什么 二.Scala的安装(所有节点) 三.Spark 安装(所有节点) 1.下载安装 2.配置 Spark 环境变量 四.Spark 配置(namenode01) 1.配置 ...
- Git速成学习第三课:创建与合并分支
本来第三课想记录一下远程仓库的创建与克隆0.0但是想了想还是不写了. 这里写一下分支管理中的创建与合并. Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng. ...
- NDK学习笔记-JNI的异常处理与缓存策略
在使用JNI的时候,可能会产生异常,此时就需要对异常进行处理 异常处理 JNI抛出Throwable异常,在Java层可以用Throwable捕捉 而在C只有清空异常这种处理 但如果在JNI中通过Th ...
- java中类加载的全过程及内存图分析
类加载机制: jvm把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成jvm可以直接使用的java类型的过程. (1)加载 将class文件字节码内容加载到内存中,并将这些静态数据转 ...
- list集合的一些小见解
关于LIst集合 前言: 第一次写博客,有些东西可能总结的到位,发表一下自己的一些观点,欢迎大佬们点评和指教 正文: list集合可以分为ArrayLlst和LinkedList. ArrayList ...
- linux基础命令笔记
配置IP地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 忘记root密码grub e 选择kernel按e 输入single b 1:目录及文件的基本操 ...
- 服务器TIME_WAIT和CLOSE_WAIT区别及解决方案
系统上线之后,通过如下语句查看服务器时,发现有不少TIME_WAIT和CLOSE_WAIT. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) ...
- Prime Number(CodeForces-359C)【快速幂/思维】
题意:已知X,数组arr[n],求一个分式的分子与分母的最大公因数.分子为ΣX^arr[i],分母为X^Σarr[i],数组为不递减序列. 思路:比赛的时候以为想出了正确思路,WA掉了很多发,看了别人 ...
- B - How many integers can you find
Now you get a number N, and a M-integers set, you should find out how many integers which are smal ...