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获取外网ip地址的方法总结
Jul 02 Python
Python操作csv文件实例详解
Jul 31 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
安装python及pycharm的教程图解
Oct 10 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 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
利用“多说”制作留言板、评论系统
2015/07/14 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
javascript常用方法汇总
2014/12/02 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
Vue表单实例代码
2016/09/05 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python制作Windows系统服务
2017/03/25 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
法定授权委托证明书
2014/09/27 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS