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对文件操作知识汇总
May 15 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
Python3中列表list合并的四种方法
Apr 19 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
用python做游戏的细节详解
Jun 25 Python
用python打印1~20的整数实例讲解
Jul 01 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
Django多数据库配置及逆向生成model教程
Mar 28 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
python 实现客户端与服务端的通信
Dec 23 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 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 开发环境配置(Zend Server安装)
2010/04/28 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
2014/02/04 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
2015/11/02 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
文明宿舍获奖感言
2014/02/07 职场文书
班主任对学生的评语
2014/04/26 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
烟台的海导游词
2015/02/02 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
起诉书格式范文
2015/05/20 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
校长新学期寄语2016
2015/12/04 职场文书
初中历史教学反思
2016/02/19 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS