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 相关文章推荐
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
Python脚本实现12306火车票查询系统
Sep 30 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
解决pycharm无法调用pip安装的包问题
May 18 Python
对python制作自己的数据集实例讲解
Dec 12 Python
python打包成so文件过程解析
Sep 28 Python
Python sqlite3查询操作过程解析
Feb 20 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
Apr 13 Python
Python 在函数上添加包装器
Jul 28 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通过rmdir删除目录的简单用法
2015/03/18 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
贯彻学习两会心得体会范文
2014/03/17 职场文书
校庆接待方案
2014/03/18 职场文书
酒店管理求职信范文
2014/04/06 职场文书
一帮一活动总结
2014/05/08 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript