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下载文件时显示下载进度的方法
Apr 02 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
python批量读取文件名并写入txt文件中
Sep 05 Python
Golang GBK转UTF-8的例子
Aug 26 Python
python对常见数据类型的遍历解析
Aug 27 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
Python制作简单的剪刀石头布游戏
Dec 10 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_xmlhttp 乱码问题解决方法
2009/08/07 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
PHP 超级全局变量相关总结
2020/06/30 PHP
jQuery的三种$()
2009/12/30 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python实现动态添加属性和方法操作示例
2018/07/25 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
Django model select的多种用法详解
2019/07/16 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python for循环及基础用法详解
2019/11/08 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python&&GDAL实现NDVI的计算方式
2020/01/09 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
个人查摆剖析材料
2014/02/04 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
工会换届选举方案
2014/05/21 职场文书
教师个人总结范文
2015/02/11 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
小兵张嘎观后感
2015/06/03 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
Mysql数据库命令大全
2021/05/26 MySQL