Python使用ftplib实现简易FTP客户端的方法


Posted in Python onJune 03, 2015

本文实例讲述了Python使用ftplib实现简易FTP客户端的方法。分享给大家供大家参考。具体实现方法如下:

#!/usr/bin/python 
#-*- coding:utf-8 -*- 
from ftplib import FTP   #加载ftp模块 
ftp=FTP()          #设置变量 
ftp.set_debuglevel(2)    #打开调试级别2,显示详细信息 
ftp.connect("IP","port")  #连接的ftp sever和端口 
ftp.login("user","password")#连接的用户名,密码 
print ftp.getwelcome()   #打印出欢迎信息 
ftp.cmd("xxx/xxx")     #更改远程目录 
bufsize=1024        #设置的缓冲区大小 
filename="filename.txt"   #需要下载的文件 
file_handle=open(filename,"wb").write
#以写模式在本地打开文件 
ftp.retrbinaly("RETR filename.txt",file_handle,bufsize)
#接收服务器上文件并写入本地文件 
ftp.set_debuglevel(0)    #关闭调试模式 
ftp.quit          #退出ftp 
ftp.dir()          #显示目录下文件信息 
ftp.mkd(pathname)      #新建远程目录 
ftp.pwd()          #返回当前所在位置 
ftp.rmd(dirname)      #删除远程目录 
ftp.delete(filename)    #删除远程文件 
ftp.rename(fromname, toname)#将fromname修改名称为toname。 
ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上传目标文件

一个FTP完整实例:

#coding:utf-8 
from ctypes import * 
import os 
import sys 
import ftplib 
class myFtp: 
  ftp = ftplib.FTP() 
  bIsDir = False 
  path = "" 
  def __init__(self, host, port='21'): 
    self.ftp.set_debuglevel(2) #打开调试级别2,显示详细信息  
    #self.ftp.set_pasv(0)  #0主动模式 1 #被动模式 
    self.ftp.connect( host, port ) 
  def Login(self, user, passwd ): 
    self.ftp.login( user, passwd ) 
    print self.ftp.welcome 
  def DownLoadFile( self, LocalFile, RemoteFile ): 
    file_handler = open( LocalFile, 'wb' ) 
    self.ftp.retrbinary( "RETR %s" %( RemoteFile ), file_handler.write )  
    file_handler.close() 
    return True 
  def UpLoadFile( self, LocalFile, RemoteFile ): 
    if os.path.isfile( LocalFile ) == False: 
      return False 
    file_handler = open( LocalFile, "rb" ) 
    self.ftp.storbinary( 'STOR %s'%RemoteFile, file_handler, 4096 )
    file_handler.close() 
    return True 
  def UpLoadFileTree( self, LocalDir, RemoteDir ): 
    if os.path.isdir( LocalDir ) == False: 
      return False 
    LocalNames = os.listdir( LocalDir ) 
    print RemoteDir 
    self.ftp.cwd( RemoteDir ) 
    for Local in LocalNames: 
      src = os.path.join( LocalDir, Local) 
      if os.path.isdir( src ): 
        self.UpLoadFileTree( src, Local ) 
      else: 
        self.UpLoadFile( src, Local ) 
    self.ftp.cwd( ".." ) 
    return 
  def DownLoadFileTree( self, LocalDir, RemoteDir ): 
    if os.path.isdir( LocalDir ) == False: 
      os.makedirs( LocalDir ) 
    self.ftp.cwd( RemoteDir ) 
    RemoteNames = self.ftp.nlst()  
    for file in RemoteNames: 
      Local = os.path.join( LocalDir, file ) 
      if self.isDir( file ): 
        self.DownLoadFileTree( Local, file )         
      else: 
        self.DownLoadFile( Local, file ) 
    self.ftp.cwd( ".." ) 
    return 
  def show( self, list ): 
    result = list.lower().split( " " ) 
    if self.path in result and "<dir>" in result: 
      self.bIsDir = True 
  def isDir( self, path ): 
    self.bIsDir = False 
    self.path = path 
    #this ues callback function ,that will change bIsDir value 
    self.ftp.retrlines( 'LIST', self.show ) 
    return self.bIsDir 
  def close( self ): 
    self.ftp.quit() 
ftp = myFtp('********') 
ftp.Login('*****','*****') 
#ftp.DownLoadFile('TEST.TXT', 'others\\runtime.log')#ok 
#ftp.UpLoadFile('runtime.log', 'others\\runtime.log')#ok 
#ftp.DownLoadFileTree('bcd', 'others\\abc')#ok 
#ftp.UpLoadFileTree('aaa',"others\\" ) 
ftp.close()
print "ok!"

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
ssh批量登录并执行命令的python实现代码
May 25 Python
Python中的各种装饰器详解
Apr 11 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
Aug 08 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
python交换两个变量的值方法
Jan 12 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
May 09 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
python 消除 futureWarning问题的解决
Dec 25 Python
利用python在excel中画图的实现方法
Mar 17 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
Python 多线程共享变量的实现示例
Apr 17 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python中的深拷贝和浅拷贝详解
Jun 03 #Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 #Python
python处理二进制数据的方法
Jun 03 #Python
Python读写配置文件的方法
Jun 03 #Python
python操作ssh实现服务器日志下载的方法
Jun 03 #Python
Python实现建立SSH连接的方法
Jun 03 #Python
解密Python中的描述符(descriptor)
Jun 03 #Python
You might like
PHP开发入门教程之面向对象
2006/12/05 PHP
PHP 实用代码收集
2010/01/22 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
jquery 回车事件实现代码
2011/08/23 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
JavaScript数据类型的存储方法详解
2017/08/25 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python 探针的实现原理
2016/04/23 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
施工安全协议书
2013/12/11 职场文书
三年级音乐教学反思
2014/01/28 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
黄石寨导游词
2015/02/05 职场文书
盲山观后感
2015/06/11 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
python高温预警数据获取实例
2022/07/23 Python
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS