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+selenium实现截图图片并保存截取的图片
Jan 05 Python
python实现读Excel写入.txt的方法
Apr 29 Python
python检索特定内容的文本文件实例
Jun 05 Python
python pandas修改列属性的方法详解
Jun 09 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python opencv摄像头的简单应用
Jun 06 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
Python中关于浮点数的冷知识
Sep 22 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
python dict如何定义
Sep 02 Python
Django restful framework生成API文档过程详解
Nov 12 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 error_log 函数的使用
2009/04/13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
Vue 事件处理操作实例详解
2019/03/05 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
对pandas中Series的map函数详解
2018/07/25 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python找出完数的方法
2018/11/12 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
巴西世界杯32强口号
2014/06/05 职场文书
师德师风自查材料
2014/10/14 职场文书
党的作风建设心得体会
2014/10/22 职场文书
校园广播站开场白
2015/06/01 职场文书
新入职员工工作总结
2015/10/15 职场文书
Java中的随机数Random
2022/03/17 Java/Android
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers