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发送邮件接收邮件示例分享
Jan 21 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
python运行其他程序的实现方法
Jul 14 Python
pandas 使用apply同时处理两列数据的方法
Apr 20 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python最长回文串算法
Jun 04 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Django中密码的加密、验密、解密操作
Dec 19 Python
关于python中的xpath解析定位
Mar 06 Python
Python如何安装第三方模块
May 28 Python
python爬虫---requests库的用法详解
Sep 28 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
AngularJS中的指令全面解析(必看)
2016/05/20 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
《少年王勃》教学反思
2014/04/27 职场文书
2014年转正工作总结
2014/11/08 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
关于倡议书的范文
2015/04/29 职场文书
幸福来敲门观后感
2015/06/04 职场文书
与死神共舞观后感
2015/06/15 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
cypress测试本地web应用
2022/06/01 Javascript
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技