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>

python淘课之家_python练习——moudule03——选课系统相关推荐

  1. 风变python小课离线版_Python是个什么鬼?为什么医学生朋友圈里都是它!

    "医学生去实习,就只能多学习,不看待遇吗?"前几天,有位同学在后台给我留言.仔细了解后才知道,在医院实习了两个月的她, 觉得每天工作都很心累,实习期没有工资不说,有时候还需要24小 ...

  2. python淘宝cookies抢购_python实现简单爬虫模拟登录淘宝(cookie简介)

    试验了一个晚上,python的小爬虫还是挺可爱的,简单几行就可以抓取网页了.如果你和我一样是新手,你可以先去http://blog.csdn.net/column/details/why-bug.ht ...

  3. python爬取链家_python+scrapy爬虫(爬取链家的二手房信息)

    之前用过selenium和request爬取数据,但是感觉速度慢,然后看了下scrapy教程,准备用这个框架爬取试一下. 1.目的:通过爬取成都链家的二手房信息,主要包含小区名,小区周边环境,小区楼层 ...

  4. python pdf脚本之家_Python实现简单拆分PDF文件的方法

    本文实例讲述了Python实现简单拆分PDF文件的方法.分享给大家供大家参考.具体如下: 依赖pyPdf处理PDF文件 切分pdf文件 使用方法: 1)将要切分的文件放在input_dir目录下 2) ...

  5. python 淘宝滑块验证_python selenium 淘宝滑块验证码 问题

    正常打开淘宝等页面,搜索商品和滑块验证码是没有问题的,但是用selenium打开,在多次翻页后出现的滑块验证码就总是失败,无论是手动滑还是代码控制都不可以,目前正在找解决办法... 此问题针对多次翻页 ...

  6. python爬虫课设报告_python爬虫小说设计报告 相关实例(示例源码)下载 - 好例子网...

    开发语言:Python | 大小:0.07M | 发布时间:2020-11-12 | 立即下载 开发语言:Python | 大小:2.24KB | 发布时间:2020-10-23 | 发布人:吴wu ...

  7. python直播课哪个好_python模块一直播课随记

    1.关于pycharm好还是jupyter note好的问题: 分情况,脚本程序开发做爬虫用pycharm并且pyharm的debug能力强支持打断点 不过话说回来 jupyter note本身就可以 ...

  8. python淘宝cookies抢购_Python实现淘宝秒杀聚划算抢购自动提醒源码

    说明 本实例能够监控聚划算的抢购按钮,在聚划算整点聚的时间到达时发出提醒(音频文件自己定义位置)并自动弹开页面(URL自己定义). 同时还可以通过命令行参数自定义刷新间隔时间(默认0.1s)和监控持续 ...

  9. python淘宝cookies抢购_python获取淘宝登入cookies

    重点:去新浪微博登入接口登入 一.代码# coding=utf-8 import requests from selenium.webdriver.common.by import By from s ...

最新文章

  1. oracle13c迁移,Oracle数据库迁移
  2. oracle 格式化报表输出,perl的格式化(Format)报表输出实现代码
  3. jmap 文件解析_[Java基础] 使用JMAP dump及分析dump文件
  4. python websocket server_Python Websocket服务端
  5. 在PAT上提交Java代码
  6. 为什么使用@tablename起别名产生的sql语句不能用_10个简单步骤,完全理解SQL
  7. 一个简单的基于 DirectShow 的播放器 1(封装类)
  8. C# 通过string路径 获取文件名、文件扩展名、路径
  9. 微信接口请求次数_微信接口调用次数限制 支付宝微信提现
  10. thinkpad指纹识别linux,在Ubuntu下启用ThinkPad X250的指纹识别
  11. Easypanel linux离线安装,easypanel
  12. 数据中心机房建设中的关键问题都有哪些?
  13. WebSocket 原理 1
  14. ubuntu18.04 安装flash。
  15. Android listview使用适配器时出现 Attempt to invoke virtual method xxxxxxxx on a null object reference问题解决方法
  16. Python基础——流程控制之循环语句
  17. python3.6的基础知识
  18. linux清除历史linux清除history
  19. 邮箱里的服务器备份是什么,邮件归档和邮件备份,两者有什么区别?
  20. vscode remote ssh无法建立连接或一直需要输入密码

热门文章

  1. 【各种接口】USB接口、rj11和rj45
  2. 4.5 星历(历书)解码
  3. WinMount开发者刘涛涛
  4. 「数据压缩03」WAV及AVI的文件格式分析
  5. MySQL修改root密码的4种方法
  6. 怎样测试java程序能否运行_(01-04)Java应用程序可以在(    )平台上直接运行、测试,该平台包括Java虚拟机(JVM)、Java核心类库和支持文件。...
  7. 分布式锁--(mysql-redis方式)
  8. Fluent 嵌套网格(overset)功能讲解与实例操作
  9. C语言从键盘获取一个小于1000的正数,要求输出它的平方根。
  10. 条条就要离开上海去南通工作了