1.动态导入模块
lib = __import__("lib.aa")c = lib.aa.C()print(c.name)print(lib.aa.C) #下面为常用的方法import importliblib = importlib.import_module(‘lib.aa‘)print(lib.C()) 2.断言assiset 后面跟条件,如果成立就会执行下面的程序,如果不成立就会报异常 例1: assert 6 == 6print(‘6等于6‘)上诉情况没问题 所以会打印下面的内容 例2:
assert type(2) is strprint(‘g is str‘)上面的例子断言不成立所以会报错
Traceback (most recent call last):
File "/Users/luobiao/PycharmProjects/s14/day7/lib/aa.py", line 24, in <module>
assert type(2) is str
AssertionError
3.写一个简单的socketssh客户端1)服务器端代码
import socket,os,time #申明socketserver = socket.socket()#进行ip绑定server.bind((‘localhost‘,6767))#进行监听server.listen()#进行循环等待,并接收连接和连接地址 while True: conn,addr = server.accept() print(conn,addr) while True: #进行数据接收 data = conn.recv(1024) #进行数据打印,并进行解码 print(data.decode()) #调用os的popen模块,进行命令调用 d = os.popen(data.decode()).read() length = str(len(d.encode())) if len(d) == 0: d = ‘命令错误,请重新输入.‘ #回传消息 conn.send(length.encode(encoding=‘utf-8‘)) #socket粘包 两次发送的信息会粘到一起,导致接收出错 #解决方案1:使用sleep睡眠0.5秒,让缓冲区超时 让两次数据不在同一个缓冲区 #time.sleep(0.5) #解决方案2: client_ack = conn.recv(1024)#接收一个数据,让客户端返回信息 print(client_ack.decode()) conn.send(d.encode(encoding=‘utf-8‘)) server.close() 2)客服端代码
import socket #申明socketclient = socket.socket()#指定连接地址和端口client.connect((‘localhost‘,6060)) #循环发送给信息while True: #让用户输入信息,模仿ssh输入 message = input(‘>>: ‘) #发送消息,将str类型的数据转换为bytes,使用encode进行转换 client.send(message.encode(encoding=‘utf-8‘)) #接收消息,并指定接收的最大数据量,单位为字节 length = client.recv(1024).decode() client.send(‘收到大小‘.encode(encoding=‘utf-8‘)) print(length) #打印消息并进行转码 #print(length.decode()) recevied_size = 0 while int(length)> recevied_size: data = client.recv(1024) recevied_size +=len(data.decode()) print(data.decode()) print(recevied_size) else: print(‘接收完毕‘)#关闭链接client.close()
原文地址:https://www.cnblogs.com/tongyakoucun/p/8977961.html
时间: 2024-12-26 06:43:36