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 相关文章推荐
删除目录下相同文件的python代码(逐级优化)
May 25 Python
Djang中静态文件配置方法
Jul 30 Python
对命令行模式与python交互模式介绍
May 12 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
python实现单链表的方法示例
Sep 03 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
python中count函数简单的实例讲解
Feb 06 Python
python实现信号时域统计特征提取代码
Feb 26 Python
python制作微博图片爬取工具
Jan 16 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
jquery iframe操作详细解析
2013/11/20 Javascript
JQuery实现鼠标移动到图片上显示边框效果
2014/01/09 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python smallseg分词用法实例分析
2015/05/28 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
如何在django中运行scrapy框架
2020/04/22 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
2014年综治宣传月活动总结
2014/04/28 职场文书
会计学专业自荐信
2014/06/25 职场文书
迎七一演讲稿
2014/09/12 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
职称评定个人总结
2015/03/05 职场文书
宾馆客房管理制度
2015/08/06 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python