1. 程式人生 > >ftp實現終端start,並且反射型命令分發

ftp實現終端start,並且反射型命令分發

CP style pen socket pro name help ftps ons

ftp_client文件夾下的ftp_client.py:

import socket
sk=socket.socket()
sk.connect((127.0.0.1,8000))

ftp server文件夾下的:

1 bin文件夾下ftp_server。py:bin作為啟動文件夾

#bin文件夾下 作為 啟動頁面,執行core文件夾下main
#當前py文件的文件夾作為第一目錄,所以不能選core,因為bin下沒有core
#from core import main#從文件夾導入py文件

import os,sys
PATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__
))) sys.path.append(PATH) from core import main if __name__ == __main__: main.ArgvHandler()

2 conf文件夾下settings.py:conf作為配置文件夾

IP=127.0.0.1
PORT=8000

3 core文件夾下:3.1 main.py:

import socketserver
import optparse#optparse解析命令行命令
from conf import settings
from core import server#與server在同一文件夾下,但也要這樣導入
class ArgvHandler(): def __init__(self):#類先寫初始化 #要連接先考慮ip地址和端口 self.op=optparse.OptionParser() options,args=self.op.parse_args() self.verify_args(options,args) def verify_args(self,options,args): cmd=args[0] #命令分發:1.if cmd==‘start‘ #
2.字典 # 3.反射 if hasattr(self,cmd): func=getattr(self,cmd) func() def start(self): print(the server is working) s=socketserver.ThreadingTCPServer((settings.IP,settings.PORT),server.ServerHandler) s.serve_forever() def help(self): pass

core文件夾下:3.2 server.py

import socketserver
class ServerHandler(socketserver.BaseRequestHandler):
    def handle(self):
        print(ok)

代碼執行方式:終端輸入語句:先cd進入ftpserver 下的bin文件夾 然後輸入語句python ftp_server.py start

(venv) C:\Users\hound\PycharmProjects\test\ftp server\bin>
(venv) C:\Users\hound\PycharmProjects\test\ftp server\bin>python ftp_server.py start
the server is working
ok



ftp實現終端start,並且反射型命令分發