第三模块--不会的知识点整理

1、继承的实现原理:深度优先,广度优先

print(F.__mro__)

2、组合指,在一个类中以另外一个类的对象作为数据属性

3、抽象类:从一堆类中抽取相同的内容而来的,包括数据属性和函数属性,只能被继承,不能被实例化,------归一化设计

import abc
class All_file(metauclass=abc.ABCmeta):
    all_file='file'
    @abc.abctractmethod
    def read(self):
        pass

4、封装的概念

5、多次序列化到文件,读取出来是怎么样

6、instance(obj,cls)检查是否obj是类cls的对象

7、反射的概念

8、元类的概念

9、网络编程中解决粘包问题的两种形式:

9.1、远程执行服务端系统命令:

(1)引入subprocess模块与系统交互---引入管道的知识

(2)引入struct模块,先发报头的长度,再发报头(客户端根据接受完整的报头得到里面存储的文件长度)

 obj = subprocess.Popen(cmd.decode('utf-8'), shell=True,
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)

            stdout=obj.stdout.read()  # 字节类型
            stderr=obj.stderr.read()  # 字节类型

#3、把命令的结果返回给客户端 #第一步:制作固定长度的报头 header_dic={ 'filename':'a.txt', 'md5':'xxdxxx', 'total_size': len(stdout) + len(stderr) # 字节的长度 -------- 文件的大小 } header_json=json.dumps(header_dic) header_bytes=header_json.encode('utf-8') #第二步:先发送报头的长度 conn.send(struct.pack('i',len(header_bytes))) # len(header_bytes)发送信息给客户端的字节长度 #第三步:再发报头 conn.send(header_bytes) # 客户端发两次 #第四步:再发送真实的数据 conn.send(stdout) conn.send(stderr)

 可以直接打包 发送数据的长度-----客户端解压依次即可

也可以间接发送数据的长度  先发head_dic报头长度,再发报头,,客户端解压报头  得到报头里面的数据长度

9.2、上传下载文件os.path.getsize(pt_path),文件的大小--字节的长度 --<class 'int'>

file_size = os.path.getsize(pt_path)
print(file_size,type(file_size))
290 <class 'int'>



猜你喜欢

转载自www.cnblogs.com/foremostxl/p/9692324.html
今日推荐