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中的descriptor描述器的作用及用法
Jun 27 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
python数字图像处理实现直方图与均衡化
May 04 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
python构建基础的爬虫教学
Dec 23 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
python如何对链表操作
Oct 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
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
图片按比例缩放函数
2006/06/26 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
Vue响应式原理详解
2017/04/18 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
微信小程序实现单选功能
2018/10/30 Javascript
Python实现二叉搜索树
2016/02/03 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
python 模块导入问题汇总
2021/02/01 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
治安消防安全责任书
2014/07/23 职场文书
大学生学习计划书
2014/09/15 职场文书
化妆品促销活动总结
2015/05/07 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
比赛主持人开场白
2015/05/29 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python