第九天
字节流的使用:
二进制数据:图片、视频、音频等等二进制文件数据
读取字节流要先修改model
br---b---二进制模式
r---可读
f.read()读取这个输入文件的数据
将打开的文件保存到c盘的a.png,将content写入
需要关闭f.close(),ff.close()后文件才能保存,因为内存问题
读取文件如果不知道类型就按照字节来读取 ----- b
当文件数据读取完会返回 b”” --- 空字符流 利用这个特性可以用循环来读取和保存文件
大文件拷贝
import uuid
from os import path
def copy_file(src_url, dest_url):
fr = open(src_url, "br")
filename = path.basename(src_url)
real_path = path.join(dest_url, uuid.uuid4().hex + filename)
print(real_path)
fw = open(real_path, "bw")
# 如果文件比较大,不建议直接一次读完
# 如果太大,内存不够用,可能导致蓝屏
# fw.write(fr.read())
while True:
content = fr.read(1024 * 1024 * 100) # 1M
if content == b'':
break
else:
fw.write(content)
fr.close()
fw.close()
if __name__ == '__main__':
src = input("请输入要被拷贝的文件:")
dest = input("请输入要被保存的文件路径:")
copy_file(src, dest)
对象序列化和反序列化:
对象:逻辑、虚拟、抽象单位
对象序列化:就是将逻辑的东东转换为真实可以保存的数据(字节数据、字符串(json、xml、yaml……))
对象反序列化:就是将序列化后的数据,还原为逻辑数据
持久化:永久的保存数据,将数据保存到磁盘等设备(ROM)上
pickle
主要就是将对象序列化为字节数据
dumps(对象) # 将对象转换为二进制数据
loads(二进制数据) # 将二进制数据转换为对象
pickle.dump()用法
也可以写成这样
Loads的用法
dump(file, 对象) # 将对象转换为二进制数据,再持久化到磁盘
load(file) # 将磁盘上保存的二进制数据,转换为对象
json
主要是将对象序列化为字符数据
Json和pickle一样的用法,只不过json存的是字符串
面向对象(OOP:Oriented Object Programming):面向对象的编程
1、什么是面向对象?
面向对象是一种新的编程思维
模仿人对于真实世界的认知的行为和过程
面向对象就是分类的编程思想
2、先了解什么是面向过程?
C语言的解决问题的方案:
面向过程(函数)的编程语言
大型软件
3、类和对象
类:事物的类别,类是一个抽象,是人认知一类事物的统称
对象:事物的一个实在的案例,实例,对象是一个真实存在的事物,是类中的一个案例
python如何定义类
class关键字
class 类名称(object):
def __init__(self):
# 初始化属性
通过方法来描述行为动作
创建对象:
如java中:
类型 变量名称 = new 构造函数();
User ljh = new User();
python中:
变量名称 = 调用初始化函数()
u1 = User();
# 老师案例
# python定义类,使用class关键字
# 类名称的命名规范,请遵循大驼峰法!!!
class User(object):
# 重写__init__方法
def __init__(self):
# 定义属性
self.name = "刘建宏"
self.age = 16
self.gender = "男"
# 使用方法(函数)来描述一个类的行为动作
def speak(self):
print(f"我的名字叫{self.name},我今年{self.age}岁了,我是一个{self.gender}的")
print("报告完毕")
if __name__ == '__main__':
# 创建对象
u1 = User()
# 调用方法
u1.speak()
# 修改属性
u1.name = "刘帅哥"
u1.speak()
# 个人代码
class User():
def __init__(self):
print("现在调用的是初始化方法")
self.p = "自定义方法"
def out(self):
print(f"现在调用的是{self.p}")
if __name__ == '__main__':
u1 = User()
u1.out()
u1.p = "修改后的自定义方法"
u1.out()