python-study-08

上节课复习

上节课复习:
1、数据类型
int
float
str
list
列表内的元素可以是任意类型
tuple
元组内的元素可以是任意类型
dict
字典的key必须是不可变类型
字典的value可以是任意类型
set
集合内元素必须为不可变类型
集合内元素无序
集合内元素不能重复

可变类型:值变,id不变
列表,字典,集合
不可变类型:值变,id也跟着变
int,float,str,tuple

可以按照索引取值都是有序
str,list,tuple
否则都是无序
dict,set

只能存一个值的:
int,float,str

可以存多个值的,(比喻为容器类型)
list,tuple,dict,set

2、字符编码
unicode:内存(不能改变)
2bytes存一个字符

上-------unicode--------》4e0a
上<-------unicode--------4e0a

gbk:
2bytes代表一个中文字符,1bytes代表一个英文字符
utf-8
3bytes代表一个中文字符,1bytes代表一个英文字符

unicode-------编码encode---------》utf-8
unicode《-------解码decode---------utf-8

处理乱码问题,一个核心的思想:
字符当初是以什么编码格式存的/编码就应该以什么编码方式解码

python3中
str类型的值默认就是unicode编码的结果
name='何'
print(name)

bytes:可以当成二进制去看
name_bytes=name.encode('utf-8')
name_bytes.decode(''utf-8')

今日内容:
文件处理

文件基本操作


1 什么是文件?
文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位
文件的操作核心就:读、写
即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序
对文件的读写操作转换成具体的硬盘指令(比如控制盘片转动,控制机械手臂移动来读写数据)

2 为什么要有文件?
因为内存无法永久保存数据,但凡我们想要永久保存数据都需要保存到硬盘中,
而操作文件就可以实现对硬件的操作

3 如何用文件
# 把内存中的数据存储到硬盘中去
# 把硬盘中的数据读到内存中
#rawstring
f=open(r'E:\SH_fullstack_s2\day08\a.txt',mode='r') # 向操作系统发起请求,要求操作系统打开文件,占用操作系统的资源
data=f.read() # 向操作系统打开发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
print(data)
# del f
f.close() #向操作系统发起请求,要求操作系统关闭文件,回收系统资源
# print(f)
# f.read()

#1、绝对路径:从盘符(C:\\ E:\\ D:\\)开始写一个完整的路径
#2、相对路径:相对于当前执行文件所在的文件夹开始找

# 总结:
#1、打开文件
#2、读写
#3、关闭

文件的打开模式

# 控制读写文件内容的结果有两种:t模式text,b模型bytes
#注意:
#1、t与b这两种模式均不能单独使用,都需要与r/w/a之一连用
#2、默认的内容格式是t
#3、只有文本文件才能用t模式,也只有文本文件才有字符编码的概念

# 操作文件的基础模式有三种: #1、r,默认的 #2、w #3、a

#r:read,只读模式
#1、只能读,不能写
#2、在文件不存在时,会报错,在文件存在的时候会将文件指针移动到文件的开头,读完就在末尾了
# f=open('b.txt',mode='rt',encoding='utf-8')
# data1=f.read() 这时候指针已经在文件末尾了
# print('第一次:',data1)
# # print(type(data1))
#
# # data2=f.read() #这时候读的就是空了 什么都没有
# # print('第二次:',data2)
# f.close()

# f=open(r'b.txt',mode='rt',encoding='utf-8') #又重新打开了一次文件,指针还是在文件的开头
# data2=f.read() #一次读完整个文件
# print('第二次:',data2)
# f.close()

# f=open(r'b.txt',mode='rt',encoding='utf-8')
# # print(f.readable()) #是否可读
# # print(f.readline(),end='') #一行一行的读,因为文件内有换行符 所以把print的换行符取消了
# # print(f.readline(),end='')
#
# lines=f.readlines() #和read差不多
# print(lines)
# f.close()
#
#w:只写模式
#1、只能写,不能读
#2、在文件不存在时会创建空文件,在文件存在的时候会将文件内容清空
# f=open(r'c.txt',mode='wt',encoding='utf-8')
# # print(f.readable()) #报错,不可读
# # f.read()
# # f.write('你好啊我的天\n你好啊我的地\n啊啊啊啊啊啊\n')
# # f.write('4444\n')
# # f.write('5555')
#
# lines=['1111\n','2222\n','33333\n']
# # for line in lines:
# # f.write(line)
# f.writelines(lines) #列表一次性读进去,writelines相当于writeline+for循环
#
# f.close()

#a:只追加写模式
#1、只能写,不能读
#2、在文件不存在时会创建空文件,在文件存在的时候会将指针移动到文件末尾

# f=open('d.txt',mode='at',encoding='utf-8')
# print(f.readable()) #报错不可读
# f.read()

# f.write('555555\n6666\n')
# f.writelines(['77777\n','8888888\n','999999999\n'])

# f.close()

#b:二进制模式
#注意:
#1、一定不能指定字符编码,只有t模式才与字符编码有关
#2、b是二进制模式,是一种通用的文件读取模式,因为所有的文件在硬盘中都是以二进制形式存放的

# f=open('egon.jpg','rb')
# data=f.read()
# print(type(data))
# f.close()

# f=open('oldsiji.mp4','rb')
# data=f.read()
# f.close()

# f=open(r'F:\oldsiji.mp4','wb')
# f.write(data)
# f.close()

# 循环读
# f=open('d.txt','rt',encoding='utf-8')
# for line in f:
# print(line)
# f.close()

# f=open('d.txt','rb')
# for line in f:
# print(line)
# f.close()

# f=open('oldsiji.mp4','rb')
# for line in f:
# print(line)
# f.close()

# f=open('e.txt','wb')
# f.write('你好啊'.encode('utf-8'))
#
# f.close()

# f=open('e.txt','ab')
# f.write('大家好,我是egon'.encode('utf-8'))
# f.close()


# 上下文管理
# with open('e.txt','rb') as f,open('j.txt','wt',encoding='utf-8') as f1:
# #文件的操作
# src_data=f.read()
# res=src_data.decode('utf-8')
# # print(res,type(res))
# f1.write(res)

with open('e.txt','rb') as f,\
open('j.txt','wb') as f1:
#文件的操作
f1.write(f.read())

今日作业
今日作业:
一、实现用户注册功能
思路:
用户输入用户名、密码
将用户输入的内容按照固定的格式,比如:egon:123,存入文件
可以往一个文件中重复注册新的用户名和密码

二、实现用户验证功能更:
思路:
用户输入账号密码,从文件中读出账号密码,与用户输入的进行比对

三、编写程序,实现文件拷贝功能
思路:
用户输入源文件路径和目标文件路径,执行文件拷贝

明早默写:
循环读取文件
只读的方式读取文件,并说明注意事项
只写的方式写文件,并说明注意事项
只追加写的方式写文件,并说明注意事项

简述t与b模式的区别

猜你喜欢

转载自www.cnblogs.com/xujinjin18/p/9133427.html
今日推荐