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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python实现的快速排序算法详解
Aug 01 Python
Python发送http请求解析返回json的实例
Mar 26 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
Python应用领域和就业形势分析总结
May 14 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python yield关键词案例测试
Oct 15 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
详解Python实现进度条的4种方式
Jan 15 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
Python文件操作及内置函数flush原理解析
Oct 13 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 星际争霸
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP4在Windows2000下的安装
2006/10/09 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
按Enter键触发事件的jquery方法实现代码
2014/02/17 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
pyside写ui界面入门示例
2014/01/22 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
什么是python的列表推导式
2020/05/26 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
职工运动会邀请函
2014/02/02 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
公司职员入党自传书
2015/06/26 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书
在Python中如何使用yield
2021/06/07 Python
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技