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里隐藏的“禅”
Jun 16 Python
Python中实现的RC4算法
Feb 14 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
深入理解Django的中间件middleware
Mar 14 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
详解python深浅拷贝区别
Jun 24 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
python多进程使用函数封装实例
May 02 Python
Python发送邮件封装实现过程详解
May 09 Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 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
linux下 C语言对 php 扩展
2008/12/14 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
2010/06/21 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
JS设计模式之状态模式概念与用法分析
2018/02/05 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python中扩展包的安装方法详解
2017/06/14 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
使用Python FastAPI构建Web服务的实现
2020/06/08 Python
Python中pass的作用与使用教程
2020/11/13 Python
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
初中英语教学反思
2014/01/25 职场文书
django上传文件的三种方式
2021/04/29 Python
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android