python淘课之家_python练习——moudule03——选课系统

1 importsocketserver,json,configparser,os,time2

3 STATUS_CODE ={4 200 : "操作成功",5 601 : '操作失败'

6 }7 Base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))8 from conf importsettings9 classFTPHandler(socketserver.BaseRequestHandler):10 defhandle(self):11 whileTrue:12 print("welcome to FTPHander-handle-whileTrue...")13 self.data = self.request.recv(1024).strip()14 if self.data isNone:15 print("Client is closed")16 break

17 print(self.client_address[0])18

19 data =json.loads(self.data.decode())20

21 if data.get('action') == 'auth':22 self._auth(data)23 elif data.get('action') in ('put','get','ls'):24 func = getattr(self,'_%s'%data.get('action'))25 func(data)26 else:27 print('invlid cmd')28 self.send_response(601)29

30

31 def_auth(self,data):32 #print(data)

33 parser =configparser.ConfigParser()34 parser.read(settings.ACCOUNT_FILE)35 section_list =parser.sections()36 if data.get('username') insection_list:37 true_pwd = parser.get(data.get('username'),'password')38 quation = parser.get(data.get('username'),'quation')39 #print(true_pwd,quation)

40 #print(data.get('password'))

41 if true_pwd == data.get('password'):42 #print('1313')

43 self.send_response(200)44

45

46 #def _auth(self,*args,**kwargs):

47 #print(args.center(60,'-'))

48 #parser = configparser.ConfigParser()

49 #parser.read(settings.ACCOUNT_FILE)

50 #section_list = parser.sections()

51 #if args['username'] in section_list:

52 #true_pwd = parser.get(args['username'],'password')

53 #quation = parser.get(args.get['username'],'quation')

54 #if true_pwd == args['password']:

55 #self.send_response(200)

56 #if args.get('username') in section_list:

57 #true_pwd = parser.get(args.get('username'),'password')

58 #quation = parser.get(args.get('username'),'quation')

59 #if true_pwd == args.get('password'):

60 #self.send_response(200)

61

62 def send_response(self,code,data=None):63 response ={'code':code,'msg':STATUS_CODE[code]}64 ifdata:65 response.update( data )66 self.request.send(json.dumps(response).encode())67

68 def verify_data(self,*args):69 pass

70

71 def_put(self,data):72 print('start put......................................................')73 self.verify_data(data)74 if data.get('header') =={}:75 self.send_response(601)76 parser =configparser.ConfigParser()77 parser.read(settings.ACCOUNT_FILE)78 section_list =parser.sections()79 username_of_data = data.get('header').get('username')80 flag = username_of_data insection_list81 #print(flag)

82 ifflag:83 quation = parser.get(username_of_data, 'quation')84 #home_DIR = Base_dir.join('home\%s' % username_of_data)

85 home_DIR = os.path.join(Base_dir,'home\%s' %username_of_data)86 #print(home_DIR)

87 user_exit_file =os.listdir(home_DIR)88 print(user_exit_file)89 size_exited =090 for filePath inuser_exit_file:91 filePath =os.path.join(home_DIR,filePath)92 size_exited +=self.get_FileSize(filePath)93

94 puted_file_size = data.get('file_size')95

96 if puted_file_size > int(quation) -size_exited:97 self.send_response(601)98 else:99 self.send_response(200)100 puted_filename = data.get('filename')101 if puted_filename inuser_exit_file:102 puted_filename = '%s-1'%puted_filename103 #filename = home_DIR.join(puted_filename)

104 filename =os.path.join(home_DIR,puted_filename)105 get_FileSize =0106 with open(filename,"wb") as f:107 while get_FileSize <108 file_data="self.request.recv(1024)109" f.write get_filesize self.request.send>

113 #print(get_FileSize, puted_file_size)

114 self.send_response(200)115 print('put successfully...'.center(60,'-'))116

117

118 defget_FileSize(self,filePath):119 fsize =os.path.getsize(filePath)120 #fsize = fsize / float(1024)

121 #return round(fsize, 2)

122 returnfsize123

124 def_get(self,data):125 print('start get................')126 #self.verify_data(data)

127 if data.get('header') =={}:128 self.send_response(601)129 parser =configparser.ConfigParser()130 parser.read(settings.ACCOUNT_FILE)131 section_list =parser.sections()132 username_of_data = data.get('header').get('username')133 filename = data.get('filename')134 #home of user

135 home_DIR = os.path.join(Base_dir,'home\%s' %username_of_data)136 #abspath

137 filename =os.path.join(home_DIR,filename)138 ifos.path.isfile(filename):139 file_size =os.path.getsize(filename)140 self.send_response(200,{'file_size':'%s'%file_size})141 f = open(filename,'rb')142 for line inf:143 print(line)144 self.request.send(line)145 self.request.recv(1)146 self.send_response(200)147 print("get successfully.....")148 else:149 self.send_response(601)150

151

152 def_ls(self,data):153 print('start ls...')154 self.verify_data(data)155 if data.get('header') =={}:156 self.send_response(601)157 parser =configparser.ConfigParser()158 parser.read(settings.ACCOUNT_FILE)159 section_list =parser.sections()160 username_of_data = data.get('header').get('username')161 flag = username_of_data insection_list162 ifflag:163 home_DIR = os.path.join(Base_dir, 'home\%s' %username_of_data)164 user_exit_file =os.listdir(home_DIR)165 self.request.sendall(json.dumps(user_exit_file).encode())166 for i inuser_exit_file:167 print(i)168

169

170 def _cd(self,*args,**kwargs):171 pass

172

173 if __name__ == '__main__':174 HOST, PORT = settings.Host, settings.PORT

108>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值