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 14 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
详解Django 时间与时区设置问题
Jul 23 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
python读取Excel表格文件的方法
Sep 02 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 Python
python如何绘制疫情图
Sep 16 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 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
织梦模板标记简介
2007/03/11 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
js自定义回调函数
2015/12/13 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
React-intl 实现多语言的示例代码
2017/11/03 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
js实现小星星游戏
2020/03/23 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
[06:06]2018DOTA2亚洲邀请赛主赛事第四日战况回顾 全明星赛欢乐上演
2018/04/07 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
儿童编程python入门
2018/05/08 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python中的协程深入理解
2019/06/10 Python
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
函授自我鉴定
2013/11/06 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python