作业要示:
开发简单的FTP:
1. 用户登陆
2. 上传/下载文件
3. 不同用户家目录不同
4. 查看当前目录下文件
5. 充分使用面向对象知识
REDMAE
1 用户登陆 2 3 1、查看用户目录文件 4 2、上传文件, 5 3、下载方件 6 4、退出 7 8 程序结构: 9 socket_server_client/#程序目录 10 |- - -clients/#client程序主目录 11 | |- - -__init__.py 12 | |- - -bin/#启用目录 13 | | |- - - __init__.py 14 | | |- - -socket_client.py#客户端启动 15 | | 16 | |- - -cfg/#配置文件目录 17 | | |- - - __init__.py 18 | | |- - -config.py#配置文件 19 | | 20 | |- - -core/#主要程序目录 21 | | |- - - __init__.py 22 | | |- - -client_func.py#主要函数 23 | | 24 | |- - -home/#客户端下载文件目录 25 | 26 |- - -servers/#server程序主目录 27 | |- - -__init__.py 28 | |- - -bin/#启用目录 29 | | |- - - __init__.py 30 | | |- - -registration.py#用户注册 31 | | |- - -socket_server.py#服务端启动 32 33 | | 34 | |- - -cfg/#配置文件目录 35 | | |- - - __init__.py 36 | | |- - -config.py#配置文件 37 | | 38 | |- - -core/#主要程序目录 39 | | |- - - __init__.py 40 | | |- - -server_classc.py#主要函数 41 | | 42 | |- - -db/#用户上传文件主目录 43 | |- - -user_file/#用户上传目录 44 | |- - -user_names#注册用户文件 45 |
服务端
servers/
bin/
registration.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import socket,os,json,sys,pickle 5 6 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 7 sys.path.append(BASE_DIR)#增加环境变量 8 from cfg import config 9 print('用户注册'.center(60,'=')) 10 while True: 11 user_=input('请输入您要注册的用户名:').strip() 12 user_dir=os.path.join(config.USER_DIR,user_)#拼接用户目录路径 13 if os.path.isdir(user_dir):# 判断一个目录是否存在 14 print('用户已经存在请重输!') 15 continue 16 else: 17 pwd_=input('请输入密码:').strip() 18 pwd_two=input('请确认密码:').strip() 19 if pwd_==pwd_two: 20 try: 21 os.mkdir(user_dir)#创建目录 22 except Exception as e: 23 print(e) 24 continue 25 finally: 26 file_dir=user_dir+'\\user'#用户目录下的用户名文件 27 if not os.path.isfile(config.USER_FILE): 28 with open(config.USER_FILE,'w',encoding='utf-8') as f: 29 f.write('{}') 30 with open(config.USER_FILE,'r+',encoding='utf-8') as f: 31 data=eval(f.readline()) 32 data[user_]=pwd_ 33 f.seek(0) 34 f.write(str(data)) 35 print('用户[%s]注册成功!'%user_) 36 exit()