字符编码和文件处理

字符编码

1、知识储备
cpu
内存
硬盘
2 文本编辑器存原理
结论:在编写py的程序的时候,是没有语法的限制的,编辑的结果
跟编写一个普通的文本文件是没有任何区别,
只有把py程序交给python解释并且在运行的第三个阶段才有了
语言意义
3 python解释器执行python程序的原理
python3 test.py
第一阶段:先启动python解释器这个软件
第二阶段:把test.py文件的内容读入内存
第三阶段:解释执行,识别语法

 

4、什么是字符编码:人类的的字符翻译成计算机能读懂的语言(二进制)
人类的字符----》翻译-------》数字
翻译的过程必须遵循一个标准:字符与数字一一对应的关系
这个标准称之为字符编码表

ASCII
8bit=1bytes,一个英文字符占用1字节

GBK
16bit=2bytes ,2个字节表示一个中文字符

unicode(内存中固定的编码):
16bit=2bytes,2个字节表示一个字符

utf-8:Unicode Transformation Format(unicode的一种转换的版本)
3bytes表示一个中文字符


保证不乱码的核心就是:
文件是以什么编码存的,就必须以该读取
强调:我们能控制的只是存到硬盘上的编码


python3解释器:默认utf-8编码
python2解释器:默认ascii编码

文件头的作用:#coding:utf-8 是告诉python解释器,用我指定的字符编码

三:执行python程序第三个阶段发生的事
会识别python语法,定义的字符串类型又涉及到字符编码的概念
x='上' #x=str('上')
python2:
字符串分为两种形式:
x='上' #python2的str类型会按照文件头指定的编码来存‘上’

python3:
str:被存成了unicode
bytes:字节等同于二进制看

四:转换
unicode---编码encode--->gbk
gbk------->解码decode---》unicode


文件处理:

默认的是t模式,t不能单独使用,必须是rt,wt,at。
1、打开文件
f=open(r'文件的路径’,mode='打开文件的模式’,encoding='操作文件的字符编码’)
f=open(r'a.txt',mode='r')

2.读/写:
data=f.read()


3.关闭文件
f.close() #回收操作系统的资源。

 

文件操作的模式有三种:r,w,a
f=open('a.txt') 默认打开文件的模式是rt模式,r代表只读,t代表文本文件

r模式:只读模式,当文件不存在时会报错

f.open('a.txt',moed='r',encoding='utf-8')

print(f.read())    #读出来是字符串为单位

 

with open('a.txt',encoding='utf-8') as f:

for line in f:

 print(line,end='')      #优先使用此方法,循环读取每一行的内容。

 

for line in f.readlines()

print(line,end='')    #循环文件不建议用此方法,因为在文件过大的情况下有可能会撑爆内存。

 

w模式:只写模式,当文件存在时则清空,当文件不存在时则创建新的空文档

f=open('a.txt',mode='w',encoding='utf-8')

f.write('123456\n')

 

f.writelines(['1111111\n','222222\n','3333333\n'])      #相当于for循环

f.close()


a模式:只追加写模式,当文件不存在时,创建文件,当文件存在时,光标直接跑到文件末尾。

f=open('b.log',mode='a',encoding='utf-8')

print(f.writable())

f.readlines()    #报错

f.write('66666\n')

f.close()

 

转载于:https://www.cnblogs.com/gaobei/articles/8630643.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器lsass系统错误,Win7系统提示Lsass.exe系统错误的原因及解决

最近很多使用Win7系统用户反馈说开机提示lsass.exe系统错误,也不知道怎么回事?lsass.exe是什么进程,可能是病毒吗?带着这些疑问,下面小编告诉大家Win7系统提示Lsass.exe系统错误的原因及解决方法,希望本教程内容可以帮助到大家。…

鼠标移动或者鼠标点击div消失不见排查

点击事件,导致某div或者容器样式隐藏,如果不能直接发现click事件绑定,那么首先排查哪些方法在控制div的样式, 然后看一看哪些方法在调用修改样式的方法。 然后再排查什么在调用修改样式的方法的方法。顺藤摸瓜就知道问题所在了。 …

服务器proc文件,特殊文件系统proc

1. 对kern_mout()进行解析:(1) 调用函数get_unnamed_dev()为文件系统/proc文件系统分配一个设备号。(2) 调用函数read_super对应的函数proc_read_super()分配super_block,inode,dentry;(a)其中super_block是在函数read_super中新生成的;(b)in…

相对路径 web

http://www.jb51.net/web/21806.html 相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。   绝对路径-以Web站点根目录为参考…

java基础英语---第一天

Path [ pɑ:θ ] 路径 class [klɑ:s] 类 classpath [klɑ:spɑ:θ ] 类路径 public [p ʌblik] 公共的,公用的 private [praivit] 私有的,私人的 static [st tik] 静的;静态的;静止的 void [vɔid] 空的,没有返回值的 main [mein] 主要的,重要的 System [sis…

洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)

题目链接 //利用先前的根节点建树 想一下不难写。 #include <cstdio> #include <cctype> //#define gc() getchar() #define gc() (SSTT&&(TT(SSIN)fread(IN,1,MAXIN,stdin),SSTT)?EOF:*SS) const int N1e65,MAXIN2e6;int n,q,root[N],A[N]; char IN[MAXI…

anaconda下安装新包一直报错(‘parse() got an unexpected keyword argument 'transport_encoding'’)...

pip没有更新 解决方案&#xff1a;在prompt上输入 “ conda install pip ”转载于:https://www.cnblogs.com/Li---Chao/p/8641299.html

NFS服务端安装与配置

一、NFS介绍 NFS数据传输基于PRC协议&#xff0c;用于在网络上共享存储。 二、服务端配置NFS 1、服务端安装包 nfs-utils和rpcbind,使用yum安装nfs-utils时会一起安装rpcbind. yum install -y nfs-utils 2、创建配置文件 vim /etc/exports&#xff0c;写入以下内容&#xff1a…

HashMap的结构及源码分析

最近朋友说研究并发可以先从HashMap源码分析开始&#xff0c;所以就研究了下HashMap的结构和源码。 先从HashMap的结构开始。 我们都知道HashMap的用来存储key,value键值对数据的。既然是存储数据的&#xff0c;我们就得想一下数据存储的数据结构信息有哪些&#xff0c;我们所知…

【前端统计图】echarts实现单条折线图

五分钟上手&#xff1a;图片.png<!DOCTYPE html> <html><head><meta charset"utf-8"><title>五分钟上手之折线图</title><!-- 引入 echarts.js --><script src"js/echarts.min.js"></script><sc…

JAVA高并发的三种实现

提到锁&#xff0c;大家肯定想到的是sychronized关键字。是用它可以解决一切并发问题&#xff0c;但是&#xff0c;对于系统吞吐量要求更高的话&#xff0c;我们这提供几个小技巧。帮助大家减小锁颗粒度&#xff0c;提高并发能力。 初级技巧-乐观锁 乐观锁使用的场景是&#…

信数金服:决策模型的迭代

在《业务规则的生命周期管理》中&#xff0c;Carole-Ann指出了版本管理中的可追溯和回退功能是十分有效的。她还提到了发布版本的强大功能&#xff0c;基本上&#xff0c;它包括了给定时间点上的各条规则&#xff08;或任何类型的项目&#xff09;的版本&#xff0c;有效地提供…

关于MyBatis的缓存

我们大概都有所了解MyBatis的缓存级别分为两种&#xff0c;一级缓存和二级缓存。 MyBatis的一级缓存是SqlSession级别的缓存&#xff0c;二级缓存是Mapper级别的缓存。当我们查询数据时&#xff0c;使用的是同一个sqlSession时&#xff0c;那我们使用的是一级缓存&#xff0c;…

使用 js 设置组合快捷键,支持多个组合键定义,还支持 React

╭┈┈╮ ╭┈┈╮ ╭┈┈╮ ┆ ├┈┈..┈┈┈┈┈.┆ └┈╮┆ ├┈┈..┈┈┈┈┈..┈┈.┈┈..┈┈┈┈┈. ┆ ┆┆ □ ┆┆ ┈┤┆ < ┆ -__┘┆ ┆ ┆┆__ ┈┈┤ ╰┈┈┴┈┈╯╰┈┈┈┈┈╯╰┈┈┈┈╯╰┈┈┴┈┈╯╰┈┈┈┈┈╯╰…

进程同步(multiprocess.Lock、multiprocess.Semaphore、multiprocess.Event) day38

进程同步(multiprocess.Lock、multiprocess.Semaphore、multiprocess.Event) 锁 —— multiprocess.Lock 通过刚刚的学习&#xff0c;我们千方百计实现了程序的异步&#xff0c;让多个任务可以同时在几个进程中并发处理&#xff0c;他们之间的运行没有顺序&#xff0c;一旦开启…

关于磁盘爆满异常(Linux下已经删除文件继续占用空间问题)

今天一个同事跟我说磁盘爆了&#xff0c;df -h 查看磁盘使用率显示确实是100%&#xff0c;但是我du -sh *查看磁盘使用情况时&#xff0c;又发现磁盘情况根本不可能占满。磁盘是40G&#xff0c;使用顶多在10G&#xff0c;那还有的30多G去哪了呢。 因为之前出现过磁盘占满的情况…

Python杨辉三角

杨辉三角&#xff0c;是二项式系数在三角形中的一种几何排列&#xff0c;在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲&#xff0c;帕斯卡&#xff08;1623----1662&#xff09;在1654年发现这一规律&#xff0c;所以这个表又叫做帕斯卡三角形。帕斯卡…

SSM简单整合

SSM整合&#xff0c;SpringMVC,Spring,MyBatis的配置文件整合。 1.Spring和MyBatis的整合&#xff08;applicationContext.xml&#xff09;。 需要spring约束。 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springf…

The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized 偶然遇到的mysql时区问题

因为换了个电脑用&#xff0c;运行时报了个很少见的异常。如下&#xff1a; Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver. The driver is automatically registered via the SPI and manual loading of the …

可持续字典树 Perfect Security

题目链接 题目大意:给你两个序列&#xff0c;第二个序列可以任意进行排列变换&#xff0c;然后由这两个序列一一异或得到答案序列&#xff0c;要求答案序列的字典序最小。 可持续字典树与第K大可持续线段树的区别主要在于每个节点上 &#xff0c;它多了一个记录值。 因为线段树…