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使用正则表达式实现文本替换的方法
Apr 18 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 Python
python3+PyQt5使用数据库窗口视图
Apr 24 Python
Python使用OpenCV进行标定
May 08 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
python matplotlib绘制三维图的示例
Sep 24 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
Jan 12 Python
tensorflow中的数据类型dtype用法说明
May 26 Python
Python标准库之typing的用法(类型标注)
Jun 02 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实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
快速解决js中window.location.href不工作的问题
2016/11/02 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
Python接收Gmail新邮件并发送到gtalk的方法
2015/03/10 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
电钳工人个人求职信
2014/05/10 职场文书
相亲活动方案
2014/08/26 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
表扬信格式模板
2015/05/05 职场文书
高效课堂教学反思
2016/02/24 职场文书
股权投资协议书
2016/03/23 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
Python Django模型详解
2021/10/05 Python