python学习

第九天

字节流的使用:
    二进制数据:图片、视频、音频等等二进制文件数据

读取字节流要先修改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()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值