字符编码复习与文件基础(二)

1.字符编码
字符与数字的对应关系表
ASCII:能识别英文字符,1Byte=1英文字符
hello
8bit|8bit|8bit|8bit|8bit

GBK:汉字与英文字符,2Byte=1中文字符 1Byte=1英文字符
你a好
8bit|8bit|8bit|8bit|8bit

1111 1111|1111 1111 首位用来标识中文字符的一部分

0111 1111|0111 1111 英文字符首位是0
在内存编码中保存的是去掉首位进行保存的

Unicode
1.能够兼容万国字符
2.与其他任意编码的二进制数都有映射关系
Unicode->GBK 编码
GBK->Unicode 解码
UTF-8:是Unicode的精简版(转换格式)3个Bytes=1中文字符,1Byte=1英文字符

2.在python中字符编码的应用
1.保证执行python程序的前两个阶段不乱码,加文件头
在文件的首行写入:#coding:文件存的时候用的编码

2.字符串类型的演变:
python2有两种"字符串"类型:
类型一
#coding:gbk
x=‘上‘ #‘上‘存成了GBK编码侯的二进制

类型二
x=u‘上‘ #‘上‘存成了Unicode类型

python3有两种“字符串”相关类型
x=‘上‘#上存成了Unicode编码侯的二进制

x.encode(‘gbk‘)转换为二进制编码是byte类型
字符串可以编码成二进制类型

3.总结:
1.保证不乱码:以什么编码存的就应该以什么编码取
2.在python2中定义字符串,应该加上前缀u
3.在编写python文件时必须加上文件头

文件处理的基本流程:
1.打开文件 拿到文件对象(文件对象====>操作系统打开的文件==>硬盘)
f=open(r‘文件的路径‘,mode=‘文件打开模式‘,encoding=‘字符编码‘) r代表原生字符串

2.操作文件:读/写
f.read()
f.readlines()
f.readline()
f.readable()

3.向操作系统发送指令关闭文件,回收操作系统资源
f.close()
f=open(r‘文件位置‘,mode=‘rt‘,encoding=‘utf-8‘)
f.close()
print(f)

二:上下文管理
with open(r‘文件位置‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
data=f.read()
print(data)
print(‘=‘*100)
for line in f:#读不出内容 第一步已经把文件内容读完文件指针已经指向到最后了
print(line)

今日内容
1.文件打开模式
2.文件操作方法
3.文件内指针移动(不是主动控制的 是被动触发的)

打开文件的模式有三种纯净模式:r(默认的) w a
控制操作文件内容的两种模式:t(默认的) b
大前提:tb模式均不能单独使用,必须与纯净模式结合使用
t文本模式:
1.读写文件都是以字符串为单位的
2.只能针对文本文件
3.必须指定encoding参数
b二进制模式:
1.读写文件都是以Bytes/二进制为单位的
2.可以针对所有文件
3.一定不能指定encoding参数

二 打开文件模式详解
1.r只读模式:在文件不存在时则报错,文件存在文件内指针直接转到开头
with open(‘文件位置‘,mode=‘rt‘,encoding=‘utf-8‘)
print(f.readlines())

2.w只写模式:在文件不存在时创建空文档,文件存在会情况文件 文件指针跑到文件开头
with open(‘b.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
print(f.writable())#是否可写 返回true 可写
print(f.readable())#是否可读 返回false 不可读
f.write(‘你好\n‘)
f.write(‘我好\n‘)#强调:在文件不关闭清空下,后写的内容一定跟着前面先写内容的后面
f.write(‘大家好\n‘)
f.write(‘111\n22222\n3333\n‘)
lines=[‘1111‘,‘2222‘,‘33333‘]
for line in lines:
f.write(lines)
f.writelines(line)

#用户认证功能
inp_name=input(‘请输入你的名字:‘).strip()
inp_pwd=input(‘请输入你的密码:‘).strip()
with open(r‘.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
for line in f:#把用户输入的名字和密码与读出内容做比对
u,p=line.strip(‘\n‘).split(‘:‘)
if inp_name==u and inp_pwd==p:
print(‘登陆成功‘)
break
else:
print(‘账号和密码错误‘)

#注册功能:
name=input(‘username>>>:‘).strip()
pwd=input(‘password>>>:‘).strip()
with open(r‘.txt‘,mode=‘at‘,encoding=‘utf-8‘) as f:
info=‘%s:%s\n‘%(name,pwd)
f.write(info)
3.a只追加写模式:在文件不存在时会创建空文档,文件存在会将文件执政直接移动到文件末尾
with open(r‘.txt‘,mode=‘at‘,encoding=‘utf-8‘) as f:
f.write(‘4444\n555\n‘)

#r+ w+ a+
with open(r‘a.txt‘,mode=‘r+t‘,encoding=‘utf-8‘) as f:#r+t可读可写模式
print(f.readline())
f.write(‘你好‘)

b:读写都是以二进制为单位
with open(r‘.txt‘,mode=‘rb‘) as f:
print(f.readline())
f.write(‘你好‘)
with open(r‘.txt‘,mode=‘rb‘) as f:
print(f.readline())
data = f.read()
print(data.decode(‘utf-8‘))#利用utf-8进行解码
with open(r‘1.png‘,mode=‘rb‘) as f:
print(f.readline())
data = f.read()
print(data)#不能解码 只能输出二进制

with open(r‘.txt‘,mode=‘wb‘) as f:
f.write(‘你好‘.encode(‘utf-8‘))
复制粘贴的原理
with open(r‘1.png‘,mode=‘rb‘) as f:
data=f.read()

with open(r‘2.png‘,mode=‘wb‘) as f:
f.write(data)
# 拷贝工具
src_file=input(‘源文件路径: ‘).strip()
dst_file=input(‘目标文件路径: ‘).strip()
with open(r‘%s‘ %src_file,mode=‘rb‘) as read_f,open(r‘%s‘ %dst_file,mode=‘wb‘) as write_f:
for line in read_f:
# print(line)
write_f.write(line)

原文地址:https://www.cnblogs.com/liugangjiayou/p/11616119.html

时间: 2024-11-04 06:19:54

字符编码复习与文件基础(二)的相关文章

Python自动化开发课堂笔记【Day03】 - Python基础(字符编码使用,文件处理,函数)

字符编码使用 1. 文本编辑器如何存取文件 文本编辑器相当一个运行在内存中的进程,所以文件内容在编辑未存储时都是在内存中的,尚未存储在硬盘之中,在没有保存之前,所编辑的任何文本都只是一堆字符,没有任何逻辑上的意义,当存储文件的时候需要以一定的编码格式存储于硬盘之中,当进行文件读取的时候也需要以同样的编码格式进行读取到内存之中进行操作,如果存储文件的编码和读取文件的编码不一致则会引起读取过程中的乱码导致文件操作失败. P.S. --> Python解释器执行py文件的原理. Step1. Pyth

java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**

在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基础知识 在了解各种字符集之前我们需要了解一些最基础的知识,如:编码.字符.字符集.字符编码基础知识. 编码 计算机中存储的信息都是用二进制表示的,我们在屏幕上所看到文字.图片等都是通过二进制转换的结果.编码是信息从一种形式或格式转换为另一种形式的过程,通俗点讲就是就是将我们看到的文字.图片等信息按照

今日知识回顾: 一、运行程序的三个核心硬件及计算机系统 二、Python解释器运行一个.py文件步骤 三、字符编码 四、文件处理

"""文件打开的模式 r 只读模式 w 只写模式 a 追加写模式操作文件单位的方式 t 文本文件 t在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码 b 二进制 一定不能指定encoding参数"""# mode参数 可以不写 不写的话默认是rt 只读的文本文件 这个t不写默认就是t# with open(r'D:\Python项目\day07\a.txt',mode='r',encoding='utf-8') as

python基础之字符编码及文件操作

一.了解字符编码前的知识储备 1.计算机运行程序或读取文件的原理 为了使计算机运行速度不被I/O操作速度拖慢,CPU并不会直接从硬盘中读取数据,因为硬盘的读写速度和CPU相差太大,所以CPU都是从速度相对较快的内存中读取数据的.而程序文件和文本文件为了永久保存又都保存在硬盘中,因此计算机运行程序或读取文件的过程一般是这样的,先由操作系统控制硬盘将程序文件或文本文件读取到内存中,然后CPU再从内存中读取数据运行或者输出到终端打印到屏幕上. 2.文本编辑器读取文件原理 2.1文本编辑器程序文件读取到

2019 08 08 字符编码,文件操作

字符编码 一.计算机基础 cpu: 控制程序的运行(从内存中取出文本编辑器的数据读入内存) 内存: 运行程序(经cpu操作后,内存中含有文本编辑器的数据) 硬盘: 存储数据(文本编辑器) 二.文本编辑器存取文件的原理 ? 计算机只认识 0和1 ? 文本编辑器的作用: 读写数据,保存数据 打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失. 要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上. 在我们编写一个py文件(没有执行)

Python20期课堂总结-20171209-Python数据类型、字符编码、文件处理

第1章 上节课课程回顾 1.1 安装python解释器 python C:\test.py 1 启动python解释器 2 把文件内容读入内存 3 解释执行 1.2 变量 age=18 id:id(age) type:type(age) value:age is:比较id ==:比较value 强调:id不同,value可以相同 1.3 数据类型 整形int 浮点型float 字符串str 列表list 字典dict 1.4 用户与程序交互 python3 input:把任何输入的内容都存成字符

【转】Python字符编码详解

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

Python:字符编码详解

相关文章 Python中文编码问题:为何在控制台下输出中文会乱码及其原理 1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节

Python字符编码详解(转)

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节