1.FTP之参数解析与命令分发

a) 层级目录如下

b) 配置文件如下

#!/usr/bin/env python
# -*- coding:utf8 -*- import socket
sk=socket.socket()
sk.connect(('127.0.0.1',8080))#括号里是元组

ftp_client.py

#!/usr/bin/env python
# -*- coding:utf8 -*-
import os,sys
PATH=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(PATH)
# print(os.path.dirname(__file__)) #打印文件所在当前目录
# print(os.path.abspath(__file__))#定位到文件绝对路径
from core import main if __name__ == '__main__':
main.ArgvHandler()

ftp_server.py

#!/usr/bin/env python
# -*- coding:utf8 -*- IP='127.0.0.1' PORT=8080

settings.py

#!/usr/bin/env python
# -*- coding:utf8 -*- import optparse #解析命令行的命令
import socketserver from conf import settings from core import server #必须这样导入,因为path路径找不到 class ArgvHandler():
def __init__(self): #初始方法
self.op=optparse.OptionParser()
# self.op.add_option("-s","--s",dest="server") # -s 自己起的,--s 固定参数
# self.op.add_option("-P","--port",dest="port") options,args=self.op.parse_args() #参数解析,返回两个结果,option是绑定参数,
# args返回没绑定的参数列表
self.verify_args(options,args) def verify_args(self,options,args):
cmd = args[0]
if hasattr(self,cmd): #反射
func=getattr(self,cmd) #拿到对应
func() def start(self):
print('The server is working on port 8080......')
s=socketserver.ThreadingTCPServer((settings.IP,settings.PORT),server.Serverhandler)
s.serve_forever() def help(self):
pass print(type(options))
print(options.server)
print(options.port)
print(args[1])

main.py

#!/usr/bin/env python
# -*- coding:utf8 -*-
import socketserver class Serverhandler(socketserver.BaseRequestHandler): def handle(self):
print('ok------yu')

server.py

py学习之FTP的更多相关文章

  1. 阅读{django-restframework}源码[generics.py]学习笔记

    首先django-restframework是基于django的一个框架.   mixins.py中开头是这样写的: Basic building blocks for generic class b ...

  2. web.py学习心得

    1.注意判断数字时,如果是get传递的参数,一定要用int转换.不然出错. 2.$var 定义时,冒号后的内容不是python内容,需加上$符号.如$var naviId:$naviId. 3.各个模 ...

  3. web.py 学习(二)Worker

    Rocket Server 启动一个线程监听客户端的连接,收到连接将连接放置到队列中.线程池中的Worker会以这个连接进行初始化.Rocket中Worker的基类是: class Worker(Th ...

  4. web.py 学习(-)Rocket web框架

    Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...

  5. linux 学习笔记 ftp

    server with sites set up for download files sometimes provide an anonymous ftp account 数据传输 ftp 192. ...

  6. linux学习笔记 ftp命令

    ftp server with sites et up for downloaing files sometimes provides an anonymous ftp account 数据传输 ft ...

  7. web.py学习遇到的问题

    刚配置好了web.py运行所需要的环境,试着运行一个入门小实例,结果遇到了异常提示.不知道是什么原因导致的(是环境没配置好?还是……),暂时做个标记,记录一下. 运行的代码 import web ur ...

  8. py学习日记

    From:<python编程从入门到实践> 持续更新中... 都在代码里了 第一到七章: """ Author:CruelKing Time:7/27/201 ...

  9. py学习笔记1.13、1.14

    1.name.title() 首字母大写 name.upper() 全部大写 name.lower() 全部小写 2.+ 合并字符串 3.单引号.双引号都可以表示字符串 4.# 注释 5.索引制定为- ...

随机推荐

  1. 搭建开发环境(React Native)

    来源:http://reactnative.cn/docs/0.31/getting-started.html 在GitHub上修改这篇文档 欢迎使用React Native!这篇文档会帮助你搭建基本 ...

  2. 管道通信Pipe

    通信原理: 在内存中开辟管道空间,生成管道操作对象,多个进程使用“同一个”管道对象进程操作即可实现通信 函数方法: fd1,fd2 = Pipe(duplex = True) 功能: 创建管道 参数: ...

  3. 利用xpath来解析douban电影相对应的信息

    from lxml import etree import requests url = "https://movie.douban.com/chart" headers = {& ...

  4. IO包中的其他类总结

    一.PrintStream和PrintWriter PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式. PrintStream 打印的所有字符都使用平台的默认字符 ...

  5. linux shell 模拟post请求

    Linux 下curl模拟Http 的get or post请求.   一.get请求 curl "http://www.baidu.com"  如果这里的URL指向的是一个文件或 ...

  6. 堆排序算法-python实现

    #-*- coding: UTF-8 -*- import numpy as np def MakeHeap(a): for i in xrange(a.size / 2 - 1, -1, -1):# ...

  7. ruby里面module和class的区别

    一句话概括,就是 class可以实例化 module不可以 别的都一样 关于继承的一点区别 class是使用<作为继承的关键字,只支持单继承 module是使用include来做实例继承(实例化 ...

  8. C++ 内连接与外连接 (转)

    啥叫内连接 外连接 我们知道编译的时候(假如编译器是VS),是以源文件cpp文件为单位,编译成一个个的obj文件,然后再通过链接器把不同的obj文件链接起来. 简单的说,如果一些变量或函数的定义是内连 ...

  9. jsp中遇到Integer的方法valueOf()和parseInt()的区别.前者要求是对象类型,后者是数字型字符串

    他们有本质区别,Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完 ...

  10. shell编程: 获得目录下(包括子目录)所有文件名,路径和文件大小

    转自:http://blog.chinaunix.net/uid-26000296-id-3575475.html function ergodic(){ ` do "/"$fil ...