python实现ftp客户端示例分享


Posted in Python onFebruary 17, 2014
#!/usr/bin/python
#coding:utf-8
#write:JACK
#info:ftp example
import ftplib, socket, os
from time import sleep, ctime
def LoginFtp(self):
        ftps = ftplib.FTP()
        ftps.connect(self.host,self.port)
        ftps.login(self.name,self.passwd)
#未进行判断地址输入是否为ip或者域名;可以进行判断是否包含<或者实体符号以及';其他可以忽略
class LoFtp(object):
    'this is ftp class example'
    host = str(raw_input('host,127.0.0.1\n'))
    if host == '':host = '127.0.0.1'
    port = raw_input('port,21\n')
    if not(port.isdigit()):port =21
    name = str(raw_input('name,anonymous\n'))
    if name=='':name='anonymous'
    passwd = str(raw_input('password\n'))
    if passwd =='':passwd=''
    def ZqFtp(self,host,name,passwd,port):
        self.host = host
        self.name = name
        self.passwd = passwd
        self.port = port
    def LoginFtp(self):
        self.ftps = ftplib.FTP()
        self.ftps.connect(self.host,self.port)
        self.ftps.login(self.name,self.passwd)
        self.buffer = 2048 #设置缓存大小
    def ShowFtp(self):
        self.LoginFtp()
        self.ftps.dir('/')
        dirs = str(raw_input('PLEASE INPUT DIR!\n'))
        print self.ftps.dir(dirs)

    def UpFtp(self):
        'uploads files'
        self.LoginFtp()
        self.ftps.set_debuglevel(2)
        filename = str(raw_input('PLEASE FILE NAME!\n'))
        file_open=open(filename,'rb') #打开文件 可读即可
        self.ftps.storbinary('STOR %s'% os.path.basename(filename),file_open,self.buffer)
        # 上传文件
        self.ftps.set_debuglevel(0)
        file_open.close()
    def DelFtp(self):
        'Delete Files'
        self.LoginFtp()
        filename=str(raw_input('PLEASE DELETE FILE NAME!\n'))
        self.ftps.delete(filename)
    def RemoveFtp(self):
        'Remove File'
        self.LoginFtp()
        self.ftps.set_debuglevel(2)#调试级别,0无任何信息提示
        oldfile=str(raw_input('PLEASE OLD FILE NAME!\n'))
        newfile=str(raw_input('PLEASE NEW FILE NAME!\n'))
        self.ftps.rename(oldfile,newfile)
        self.ftps.set_debuglevel(0)
    def DownFtp(self):
        'Download File'
        self.LoginFtp()
        self.ftps.set_debuglevel(2)
        filename=str(raw_input('PLEASE FILE NAME!\n'))
        file_down = open(filename,'wb').write
        self.ftps.retrbinary('STOP %s' % os.path.basename(filename),file_down,self.buffer)
        self.ftps.set_debuglevel(0)
        file_down.close()
 
a = LoFtp()
print a.ShowFtp()
while True:
    helpn= str(raw_input('Whether to continue to view or exit immediately!(y/n/q)\n'))
    if (helpn=='y')or(helpn=='Y'):
        dirs = str(raw_input('PLEASE INPUT DIR!\n'))
        a.ftps.dir(dirs)
    elif (helpn=='q')or (helpn=='Q'):
        exit()
    else:
        break
 
while True:
    print '上传请选择----1'
    print '下载请选择----2'
    print '修改FTP文件名称----3'
    num = int(raw_input('PLEASE INPUT NUMBER![exit:5]\n'))
    if num ==1:
        upf = a.UpFtp()
        print 'Upfile ok!'
    elif num ==2:
        dof = a.DownFtp()
        print 'Download file ok!'
    elif num ==3:
        ref = a.RemoveFtp()
        print 'Remove file ok!'
    else:
        a.ftps.quit()
        print 'Bingo!'
        break

#login(user='anonymous',passwd='', acct='') 登录到FTP服务器,所有的参数都是可选的
#pwd()                                     得到当前工作目录
#cwd(path)                                 把当前工作目录设置为path
#dir([path[,...[,cb]])       显示path目录里的内容,可选的参数cb 是一个回调函数,它会被传给retrlines()方法
#nlst([path[,...])           与dir()类似,但返回一个文件名的列表,而不是显示这些文件名
#retrlines(cmd [, cb])       给定FTP 命令(如“RETR filename”),用于下载文本文件。可选的回调函数cb 用于处理文件的每一行
#retrbinary(cmd, cb[,bs=8192[, ra]])        与retrlines()类似,只是这个指令处理二进制文件。回调函数cb 用于处理每一块(块大小默认为8K)下载的数据。
#storlines(cmd, f)           给定FTP 命令(如“STOR filename”),以上传文本文件。要给定一个文件对象f
#storbinary(cmd, f[,bs=8192])               与storlines()类似,只是这个指令处理二进制文件。要给定一个文件对象f,上传块大小bs 默认为8Kbs=8192])
#rename(old, new)            把远程文件old 改名为new
#delete(path)                删除位于path 的远程文件
#mkd(directory)              创建远程目录
#每个需要输入的地方,需要进行排查检错。仅仅这个功能太小了。不过根据实际情况更改,放在bt里边当个小工具即可
#有点烂,没有做任何try
Python 相关文章推荐
跟老齐学Python之大话题小函数(1)
Oct 10 Python
python字符串对其居中显示的方法
Jul 11 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
python文件操作之批量修改文件后缀名的方法
Aug 10 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
python有序查找算法 二分法实例解析
Feb 18 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
简单了解Java Netty Reactor三种线程模型
Apr 26 Python
python为什么要安装到c盘
Jul 20 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
用smtplib和email封装python发送邮件模块类分享
Feb 17 #Python
python类参数self使用示例
Feb 17 #Python
python实现爬虫下载漫画示例
Feb 16 #Python
python发送邮件示例(支持中文邮件标题)
Feb 16 #Python
python定时器使用示例分享
Feb 16 #Python
python求素数示例分享
Feb 16 #Python
python检测服务器是否正常
Feb 16 #Python
You might like
PHP实现定时执行任务的方法
2014/10/05 PHP
PHP自定义错误用法示例
2016/09/28 PHP
php实现URL加密解密的方法
2016/11/17 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
python编程实现希尔排序
2017/04/13 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
python下载卫星云图合成gif的方法示例
2020/02/18 Python
Python Json数据文件操作原理解析
2020/05/09 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
数控专业应届生求职信
2013/11/27 职场文书
大学生党员自我批评
2014/02/14 职场文书
运动会入场词200字
2014/02/15 职场文书
考察邀请函范文
2015/01/31 职场文书
会计岗位职责
2015/02/03 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python