Python中的FTP通信模块ftplib的用法整理


Posted in Python onJuly 08, 2016

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文件

实例

一个上传代码:
import socket
from ftplib import FTP
ftp_server='xx.xx.xx.xx'
ftp_user='xxxxx'
ftp_password='xxxxx'
ftp_backup_dir='backup'
 
newday = date.today()  #获取今天的日期
oldday = date.today()-timedelta(5)  #获得5天前的日期
newfile = '/home/backup/' + 'backup_data_' + str(newday.year) + '.' + str(newday.month) + '.' + str(newday.day) + '.zip'  #本次备份文件名(绝对路径)
oldfile = '/home/backup/' + 'backup_data_' + str(oldday.year) + '.' + str(oldday.month) + '.' + str(oldday.day) + '.zip'  #5天前备份的文件名(绝对路径)
 
def upload():
  socket.setdefaulttimeout(60)  #超时FTP时间设置为60秒
  ftp = FTP(ftp_server)
  print("login ftp...")
  try:
    ftp.login(ftp_user, ftp_password)
    print(ftp.getwelcome())  #获得欢迎信息
 
    try:
      if ftp_backup_dir in ftp.nlst():
        print("found backup folder in ftp server, upload processing.")
      else:
        print("don't found backup folder in ftp server, try to build it.")
        ftp.mkd(ftp_backup_dir)
    except:
      print("the folder" + ftp_backup_dir + "doesn't exits and can't be create!")
      sys.exit()
  except:
    print("ftp login failed.exit.")
    sys.exit()
  ftp.cwd(ftp_backup_dir)  #设置FTP路径
 
  print("upload data...")
  try:
    ftp.storbinary('STOR ' + os.path.basename(newfile), open(newfile,'rb'), 1024)  #上传备份文件
  except:
    print("upload failed. check your permission.")
  
  print("delte old file...")
  try:
    ftp.delete(os.path.basename(oldfile))  #删除5天前的备份文件
  except:
    print("the old file in ftp doesn't exists, jumped.")
 
  print("ftp upload successful.exit...")
  ftp.quit()
 
if __name__== '__main__':
  upload()
Python 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
在Django中进行用户注册和邮箱验证的方法
May 09 Python
python魔法方法-属性访问控制详解
Jul 25 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
Python sys模块常用方法解析
Feb 20 Python
Python如何基于Tesseract实现识别文字功能
Jun 05 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
python+opencv实现目标跟踪过程
Jun 21 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 #Python
Python中的os.path路径模块中的操作方法总结
Jul 07 #Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 #Python
Python的collections模块中的OrderedDict有序字典
Jul 07 #Python
Python的collections模块中namedtuple结构使用示例
Jul 07 #Python
详解Python的collections模块中的deque双端队列结构
Jul 07 #Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 #Python
You might like
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
Angular工具方法学习
2016/12/26 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
np.random.seed() 的使用详解
2020/01/14 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
浅析python连接数据库的重要事项
2021/02/22 Python
"火柴棍式"程序员面试题
2014/03/16 面试题
情人节活动策划方案
2014/02/27 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
七一党日活动总结
2014/07/08 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
邀请书模板
2015/02/02 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
Win11 BitLocker 驱动器加密
2022/04/19 数码科技