Python中的ftplib模块

Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件

FTP的工作流程及基本操作可参考协议RFC959

ftp登陆连接

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相关命令操作

ftp.cwd(pathname) #设置FTP当前操作的路径

ftp.dir() #显示目录下文件信息

ftp.nlst() #获取目录下的文件

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.retrbinary("RETR filename.txt",file_handel,bufsize)#下载FTP文件

自己写的FTP下载客户端,如果需要上传客户端,请修改下就可以了。#!/usr/local/bin/python2.7

# -*- coding: utf-8 -*-

'''

使用ftplib编写FTP客户端连接,并指定目录下载。

'''

__author__ = 'sunday208'

__date__ ="2016-02-25 12:50"

import ftplib ,socket

from sys import exit

import os

class DOFTP():

def __init__(self):

#定义公用变量

self.RED_COLOR='\033[1;31;48m'  #红 ,配置终端输出的颜色

self.BLUE_COLOR='\033[1;34;48m'  #红 ,配置终端输出的颜色

self.RES='\033[0m'

def FTP_DOWN(self,HostIP,SerPort,FtpUser,FtpPasswd,RootDir,Server_files,Local_dir):

MyFTP = ftplib.FTP()

try:

MyFTP.connect(host=HostIP,port=SerPort,timeout=5)

print '%s*****已经成功连接"%s"服务器FTP服务!%s' % (self.BLUE_COLOR,HostIP,self.RES)

except (socket.error, socket.gaierror), e:

print '%s错误:无法访问"%s" FTP服务,请检查!错误代码为"%s"%s' % (self.RED_COLOR,HostIP,e,self.RES)

exit()

try:

MyFTP.login(user=FtpUser,passwd=FtpPasswd)

print '%s*****已经成功登陆"%s"服务器FTP服务!%s' % (self.BLUE_COLOR,HostIP,self.RES)

print MyFTP.getwelcome()#显示ftp服务器欢迎信息

except (ftplib.error_perm), e:

print '%s错误:登陆失败!,请检查用户名"%s“密码"%s"是否正确!错误代码为"%s"%s' % (self.RED_COLOR,FtpUser,FtpPasswd,e,self.RES)

exit()

MyFTP.cwd(RootDir) #进入FTP目录

FTP_files = MyFTP.nlst()   #取FTP当前目录内容

if not Server_files:  #如果要下载为空,将下载该目录全部内容

DownLists = FTP_files

print "FTP全部目录%s"% DownLists

else:

#判断指定下载的文件是否在FTP目录中。

DownLists = []   #下载列表

NODownLists =[]  #没有下载列表

for line in Server_files:

if line in FTP_files:

DownLists.append(line)

else:

NODownLists.append(line)

if NODownLists:

print "%s在FTP服务器并没有指定文件%s。%s"% (self.RED_COLOR,",".join(NODownLists),self.RES)

if DownLists:

print "%s正在从FTP服务器下载如下文件%s。%s"% (self.BLUE_COLOR,",".join(DownLists),self.RES)

bufsize = 1024

for line in DownLists:

FileName = open(Local_dir + line,'wb').write

MyFTP.retrbinary('RETR %s' % os.path.basename(line),FileName,bufsize)

MyFTP.quit()

print "%sFTP已经成功退出。%s"% (self.BLUE_COLOR,self.RES)

if __name__ == "__main__":

HostIP='XXXXX'   #FTP服务器IP或者域名

SerPort='21'      #FTP端口

FtpUser='ftpuser'   #FTP用户

FtpPasswd='XXXXXX' #FTP对应用户密码

RootDir='/test'   #FTP目录

Server_files = ['1.txt','2.txt','3.txt','4.txt']  #下载服务器文件列表

#Server_files = [] #如果要下载为空,将下载该目录全部内容

Local_dir ="D:/testtmp/downfile/"  #本地目录

#Local_files =['a.txt','b.txt']  #上传服务器本地文件列表

s = DOFTP()

if os.path.exists(Local_dir)== False:  #判断本地是否有该文件目录,如果没有,将创建

try:

os.mkdir(Local_dir)

print "%s创建本地目录'%s'%s"% (s.BLUE_COLOR,Local_dir,s.RES)

except:

print "%s无法创建本地目录'%s',原因是无该盘符或者目录路径有问题,程序直接退出!%s"% (s.RED_COLOR,Local_dir,s.RES)

exit() #退出程序

s.FTP_DOWN(HostIP,SerPort,FtpUser,FtpPasswd,RootDir,Server_files,Local_dir)

执行结果如下:

python ftplib_python:使用ftplib编写FTP客户端相关推荐

  1. twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间

    twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间 目录 输出结果 实现代码 输出结果 更新-- 实现代码 #基于python的twisted框架编写一个简单的聊 ...

  2. python编写ftp客户端_用Python写FTP客户端程序

    0 前言: ftp客户端相信大家都用过,那么我们为什么还要用Python写ftp客户端呢? 我想有两个原因: 一是写出更好的ftp客户端应用程序,方便大家使用: 二是定制一些特殊服务,例如每天定时下载 ...

  3. python编写ftp客户端_python实现ftp客户端示例分享

    代码如下: #!/usr/bin/python #coding:utf-8 #write:JACK #info:ftp example import ftplib, socket, os from t ...

  4. 18. 编写FTP客户端程序

    在实际应用中可能经常访问FTP服务器来上传或下载文件,Python也可以替我们做这些. [示例 1]下面请看一个例子(ftpclient). 运行的结果如下: FTP客户端程序的编写还可以参照官方文档 ...

  5. 明明白白用Qt5.10编写FTP客户端

    使用Linux自带工具实现定时下载FTP文件(文末) 前言 自从Qt5删除了QFtp模块后,就没有了可方便使用的FTP类.根据官方的说法,是因为该模块实现质量不好被删除,而用Qt5的网络模块就可以轻松 ...

  6. python socket recv超时_python使用多线程编写tcp客户端程序,你还没掌握吗?

    这篇文章主要为大家详细介绍了python使用多线程编写tcp客户端程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在网上浏览的时候发现很多关于此题目的程序都只能接收数据,所以随便找了个程序研究 ...

  7. python ftp 文件修改时间 乐贴_如何使用Python ftplib获取FTP文件的修改时间

    我正在尝试使用Python将CSV文件加载到Amazon S3.我需要知道CSV文件的修改时间.我正在使用ftplib将FTP连接到Python(2.7). 解决方法: MLST或MDTM 虽然您可以 ...

  8. ftp 修改服务器文件时间戳,如何使用Python ftplib获取FTP文件的修改时间

    小编典典 MLST或MDTM 虽然可以使用MLST或MDTM命令通过FTP检索单个文件的时间戳,但ftplib都不支持. 当然,您可以使用实现自己的MLST或.MDTMFTP.voidcmd 有关详细 ...

  9. python文件传输模块ftplib模块的使用

    python文件传输模块ftplib模块的使用 文章目录: 一.ftplib介绍 1.ftplib的简单介绍 2.ftp的API说明 1)ftp登陆连接 2)ftp相关命令操作 二.ftplib实例说 ...

最新文章

  1. SQL Server新一轮更新
  2. 机器学习-数据科学库(第五天)
  3. 深入浅出 PouchContainer 容器化业务实践 Workshop 开放报名
  4. web前端项目详解:OPPO首页进度条特效(定时轮播)
  5. Facebook今年曾多次升级其安全和隐私控制
  6. Las Vegas拉斯维加斯(赌城)游记
  7. java 文本变量_如何将一变量作为可配置文件 java
  8. 程序员开发的“逆天”软件
  9. 2006年上半年开发心得
  10. c语言 段错误 linux
  11. VMWare安装配置Win7详解
  12. HTML-零基础入门
  13. JS中变量存储在堆中还是栈中?(深入内存原理)
  14. 获取所有复选框选中状态的id
  15. Xilinx Bit文件格式详解
  16. “知行合一”到底有什么现实意义?
  17. 二维数组中根据一维数组筛选出对应数据,无数据默认为空
  18. 嵌入式 -固件防复制系列【1】GD32代码读保护
  19. 前端面试自我介绍的技巧都有哪些?
  20. 不均衡学习和异常检测

热门文章

  1. python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...
  2. 机器学习算法之 logistic、Softmax 回归
  3. activiti 批量 mysql_Activiti6系列(3)- 快速体验
  4. 动态给实例添加属性和方法
  5. vue php 文件上传,使用vue.js和laravel上传文件
  6. linux内核的I2C子系统详解4——i2c-s3c2410.c文件中的adapter、algorithm
  7. Python 面向对象编程
  8. 01.轮播图之三 : collectionView 轮播
  9. Jquery 实现原理之 Ajax
  10. 多线程篇-NSThread-简单使用