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实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
Python的标准模块包json详解
Mar 13 Python
python 实现UTC时间加减的方法
Dec 31 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python日志logging模块功能与用法详解
Apr 09 Python
python时间序列数据转为timestamp格式的方法
Aug 03 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 Python
PyTorch 如何自动计算梯度
May 23 Python
Python数据处理的三个实用技巧分享
Apr 01 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
浅析Jquery操作select
2016/12/13 Javascript
js选项卡的制作方法
2017/01/23 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
python中split方法用法分析
2015/04/17 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
python开发之list操作实例分析
2016/02/22 Python
python打开windows应用程序的实例
2019/06/28 Python
python getpass模块用法及实例详解
2019/10/07 Python
python默认参数调用方法解析
2020/02/09 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
实习鉴定范文
2013/12/19 职场文书
小学少先队活动方案
2014/02/18 职场文书
治安消防安全责任书
2014/07/23 职场文书
公司外出活动方案
2014/08/14 职场文书
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
如何Python使用re模块实现okenizer
2022/04/30 Python