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函数中参数的使用及默认参数的陷阱
Mar 13 Python
python数据清洗系列之字符串处理详解
Feb 12 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
使用python实现ftp的文件读写方法
Jul 02 Python
pyenv与virtualenv安装实现python多版本多项目管理
Aug 17 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
Python 虚拟环境工作原理解析
Dec 24 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错误、异常处理机制(补充)
2012/05/07 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
用jquery来定位
2007/02/20 Javascript
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
JS加jquery简单实现标签元素的显示或隐藏
2013/09/23 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
详解JS函数重载
2014/12/04 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
小程序接入腾讯位置服务的详细流程
2020/03/03 Javascript
js实现轮播图特效
2020/05/28 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
Python Queue模块详解
2014/11/30 Python
Python格式化css文件的方法
2015/03/10 Python
详解Python爬虫的基本写法
2016/01/08 Python
django使用LDAP验证的方法示例
2018/12/10 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
求职者简历中的自我评价
2013/10/20 职场文书
《赶海》教学反思
2014/04/20 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
python 单机五子棋对战游戏
2022/04/28 Python