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 相关文章推荐
Python中文字符串截取问题
Jun 15 Python
Python金融数据可视化汇总
Nov 17 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
python skimage 连通性区域检测方法
Jun 21 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
使用Python实现画一个中国地图
Nov 23 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
实例代码讲解Python 线程池
Aug 24 Python
python 实现控制鼠标键盘
Nov 27 Python
python 实现的IP 存活扫描脚本
Dec 10 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
星际实力自我测试
2020/03/04 星际争霸
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
mac下如何将python2.7改为python3
2018/07/13 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
python解包用法详解
2021/02/17 Python
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
医生自荐信
2013/10/11 职场文书
大学军训自我鉴定
2013/12/15 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
七年级音乐教学反思
2014/01/26 职场文书
房屋租赁意向书
2014/04/01 职场文书
毕业留言寄语大全
2014/04/10 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript