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中while true的使用
Oct 13 Python
python入门教程之识别验证码
Mar 04 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
python使用webdriver爬取微信公众号
Aug 31 Python
python开发游戏的前期准备
May 05 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
详解pandas赋值失败问题解决
Nov 29 Python
python openssl模块安装及用法
Dec 06 Python
浅谈matplotlib默认字体设置探索
Feb 03 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
apache中为php 设置虚拟目录
2014/12/17 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
JavaScript中window.showModalDialog()用法详解
2014/12/18 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
python Opencv将图片转为字符画
2021/02/19 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
python处理document文档保留原样式
2019/09/23 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
大型演出策划方案
2014/05/28 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
2015最新民情日记范文
2015/06/26 职场文书
Python中的pprint模块
2021/11/27 Python
python实现双链表
2022/05/25 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android