字符编码
1、软件启动流程(打开notepad++文档)
从硬盘将软件加载到内存上
加载test.txt到内存中
执行notepad++的代码,将test.txt打到屏幕上

python解释器也是一个应用软件
从硬盘将软件加载到内存上
加载test.py文件读到内存
解释器解析python语法
文本编辑器与解释器打开文件的前两个阶段的是一致的,仅第三个阶段不同

什么是字符编码?字符编码表
编码:按照某种规范将数据转换为二进制
为什么要编码?
计算机只能识别0和1,那么使用计算机就必须使用二进制的方式告诉计算机
这是一个复杂的过程,所以需要一种解决的方法让计算机识别人类的语言
字符编码的发展史
1、美国使用Ascii编码表
2、其他的国家也需要使用计算机,于是每个国家都推出自己的编码表
中国-GBK
日本-shift-j
因为每个编码表互补兼容,导致乱码
3、为了统一全世界产生Unicode编码(万国编码)
1、统一全世界的编码
2、必须还兼容之前的GBK、shift-j编码
Ascii:用八个二进制位(一个字节bytes)
1111 1111 2**8=255
GBK:英文字母在GBK中占一个字节
中文占两个字节 16个二进制位 2**16-1=65535
你Y好
1111 1111 1111 1111
如果一个字节的首位为1,表示一个中文
如果一个字节的首位为0,表示一个英文
GBK 不仅仅要存储数据,还要计算每个符号
unicode:无论是英文还是其他字符,都是两个字节
为什么这么设计
1、是为了提高效率,而采取的空间换时间
缺点:
2、浪费硬盘空间,降低网络传输效率
为了解决上述unicode退出UTF-8
utf-8是可变长的
英文占一个字节
中文占三个字节
与GBK相同的是,都需要计算存几个字节,所以不适合内存
使用与:硬盘和网络传输
结论:内存中用unicode,硬盘或网络传输中用utf-8
用户驶入->内存(unicode)->转换为(utf-8)->硬盘 该过程为编码就是字符转换为二进制的过程
硬盘上的a.txt(utf-8的二进制)-> unicode的二进制-查编码表得到符号--显示到屏幕上
该过程称之为解码,把二进制转化为符号
乱码问题?
1、存储是与取出时使用的编码不一致,只要找到正确的编码数据还可以恢复
2、存的时候就已经乱了(文档中的内容超出了采用的编码表的范围),数据将丢失解决方法是用utf-8编码表
如何解决文件乱码问题
python在执行代码之前必须从硬盘加载到内存,硬盘中都是二进制,必须要用UNICODE编码表
name解释器怎么知道你采用的什么编码方式?
如果不明确自定,解释器将采用默认的解码方式,在python3中默认的是UTF-8字符编码,在python2中默认的ASCII码
当你使用pathon中则需要手动指定编码方式 设置文件头 #coding:utf-8
name=u'张全蛋‘
#u 表示将这个变量存储为unicode 编码,可以防止取出变量时乱码
1个16进制=0.5个字节

encode unicode =>utf-8 将Unicode的字符转化为二进制
decode utf-8 ->unicode 将二进制转化为Unicode

文件处理:
文件是什么?
文件是操作系统提供的虚拟概念
文件这个概念的自所以出现是为了简化对硬盘的操作
学习文件处理是为了将数据永久保存

1、打开文件
f=open('test.txt,encoding='utf-8))#是给操作系统一个指令,让操作系统去打开文件,应为应用程序无法直接控制硬盘
2、读取内容
data=f.read()
print(data)

# 使用循环 来读取全部内容 方式1
# with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="r",encoding="utf-8") as f:
# while True:
# line = f.readline()
# if not line: # 如果line为空则表示没有内容了
# print("\n没有内容啦!")
# break
# print(line,end="") # 使用循环 来读取全部内容 方式2
# with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="r",encoding="utf-8") as f:
# for line in f:
# print(line,end="") # 一次性读取全部
# with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="r",encoding="utf-8") as f:
# print(f.readlines()) # 会将每一行放入列表中

3、关闭文件
f.close()
总结:open read close 等都是在给操作系统发送指令
打开文件的语法二:在with 代码执行完毕后会自动调用close
with open('test.txt') as f:
data=f.read()

参数1 文件路径 可以相对,也可以是绝对
mode 打开文件的模式 r(只读)
w(只写)

# 注意在w模式下 一旦打开文件 立即清空原来的内容 如果文件不存在则创建新文件
# 写入字符串时需要手动拼接换行符
with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="w",encoding="utf-8") as f:
f.write("爱根\n")
print(f.writable())
f.writelines("\n".join(["abc","cba","nba"]))
# f.writelines({"name":"bgon","age":20})
pass #
with open("新文件.txt",mode="w")as f:
pass

+(可读可写)了解即可

+ 表示可读可写模式
w+ 清空原文件,如果不存在则创建
r+ 如果不存在则报错
a+ 如果不存在则创建,光标移动到最后
可读可写:可用于文本处理,但对于写别的文件,一般不用,容易造成文件的破坏打不开
Windows默认
读取内容:可以用参数指定要读取的个数,默认为-1表示全部读取
需要注意read(-1)仅限于文件较小时,如果内存过大会造成内存溢出
data=f.read(2000)

读取相关函数
read()读取全部
read(size)读取指定大小
readlines ()读取全部
readline()读一行
readable()判断是否可读

注意在w模式写,一旦打开文件 立即清空原来的文件,如果文件不存在则创建一个新文件

在操作非文本文件时,(读一个图片)必须明确指定模式为字节模式
b 用来指定为字节模式
b必须与r/w连用 rb/wb
注意、
b必须与r/w连用 rb/wb
当模式为字节模式时,不能指定encoding参数
默认情况下,读写文本模式,也就是t模式,同样需要与r/w连用

t模式下python解释器会自动转码解码而b模式不会

当模式为字节模式时单位为字节

在b模式下只能写入字节

print(data)
f.close()
print(f.readable())判断是否可读
print(f.wrireable())判断是否可写

a表示追加写入模式,不会清空原数据,会自动把光标移到最后
with open (r'文件路径’,‘at’(文档模式)/'ab'(b模式),encoding='utf-8')

控制文件的打开模式
r\w\a\+
控制操作文件内容的模式
t\b

t\b必须与打开模式连用
各种组合如下:
rt、wt、at、rb、wb、ab、r+、w+、a+

关于文件操作的常用函数
read
readline
readlines
readable

write
writelines
writeable

关于编码的两个函数
encode 编码
decode 解码

day 08字符编码 文件处理的更多相关文章

  1. Python 字符编码-文件处理

    .read #读取所有内容,光标移动到文件末尾.readable #判断文件是否可读.readline #读取一行内容,光标移动到第二行首部.readlines #读取每一行内容,存放于列表中.wri ...

  2. Day 08 字符编码

    字符编码 计算机基础 启动应用程序 1.双击QQ 2.操作系统接受指定然后把该操作转化为0和1发送给CPU 3.CPU接受指令然后把指令发给内存 4.内存接受指令把指令发送给硬盘获取数据 5.QQ在内 ...

  3. python字符编码-文件操作

    字符编码 字符编码历史及发展 为什么有字符编码 ''' 原因:人们想要将数据存入计算机 计算机的能存储的信息都是二进制的数据 内存是基于电工作的,而电信号只有高低频两种,就用01来表示高低电频,所以计 ...

  4. day 08 字符编码和文件的读写操作

    打开文件的语法 f=open("test.txt",encoding=:"utf-8") #给系统发送一个指令,让操作系统去打开文件 使用上面的方法打开文件的方 ...

  5. python第二周数据类型 字符编码 文件处理

    第一数据类型需要学习的几个点: 用途 定义方式 常用操作和内置的方法 该类型总结: 可以存一个值或者多个值 只能存储一个值 可以存储多个值,值都可以是什么类型 有序或者无序 可变或者不可变 二:数字整 ...

  6. nls 字符编码文件对应的国家语言

    原文 http://ftp.twaren.net/cpatch/faq/tech/tech_nlsnt.txt * updated by Kii Ali, 12-11-2001 ftp://ftp.n ...

  7. Python自动化开发 - 字符编码、文件和集合

    本节内容 字符编码 文件操作 集合 一.字符编码 1.编码 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.解决思路:数字与符号建立一对一映射,用不同数字表示不同符号. ASCI ...

  8. python开发基础之字符编码、文件处理和函数基础

    字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...

  9. 员工管理系统+字符编码+Python代码文件操作

    员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1  debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...

随机推荐

  1. 调用kaldi的模型进行解码

    At the moment Kaldi is targeted more at people who are building ASR systems than those who just want ...

  2. Ant使用指南

    ant 使用指南  参考:http://www.cnblogs.com/hoojo/archive/2013/06/14/java_ant_project_target_task_run.html 一 ...

  3. js监听浏览器返回事件

    $(function(){ pushHistory(); window.addEventListener("popstate", function(e) { window.loca ...

  4. MVC_Route层层深入

    1.前期准备 新建一个MVC项目,并添加Home和About两个控制器 在这两个控制器对应添加index页面 namespace Study_MVC_Route.Controllers { publi ...

  5. JavaWeb(一)Servlet

    一.Servlet简介 Servlet 是J2EE的一个规范,为Java提供统一的web应用规范. 广义的Servlet 是指实现了servlet的类 二.Servlet工作原理 1.原理: 一个ht ...

  6. Flask里面的cookie的基本操作

    #cookie相关操作,依赖于make_response #调用cookie依赖request模块 from flask import Flask,make_response,request #建立对 ...

  7. python - list 和 tuple

  8. python第七天,dict

    在python里边创建字典的方法有如下几种: >>> dict1= dict(((),(),(),(),())) >>> print(dict1) {, , , , ...

  9. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  10. Python3学习笔记29-发送邮件

    email模块用来构造邮件,smtplib模块用来发送邮件. 以QQ邮箱为例 想要在代码中使用QQ邮箱发送邮件,需要先在QQ邮箱-设置-账户中,开启SMTP服务,然后生成授权码.在进行验证账号时,用生 ...