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中模版的子目录与include标签的使用方法
Jul 16 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
jupyter notebook 参数传递给shell命令行实例
Apr 10 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
Django缓存Cache使用详解
Nov 30 Python
python 实现Harris角点检测算法
Dec 11 Python
Python OpenCV快速入门教程
Apr 17 Python
浅谈python数据类型及其操作
May 25 Python
使用Python开发贪吃蛇游戏 SnakeGame
Apr 30 Python
全网非常详细的pytest配置文件
Jul 15 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 数组使用详解 推荐
2011/06/02 PHP
php 删除cookie方法详解
2014/12/01 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
详解React中setState回调函数
2018/06/14 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
详解Python中的__new__()方法的使用
2015/04/09 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
python读取Excel实例详解
2018/08/17 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
Python中私有属性的定义方式
2020/03/05 Python
在python中使用nohup命令说明
2020/04/16 Python
Python如何安装第三方模块
2020/05/28 Python
python爬取音频下载的示例代码
2020/10/19 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
C++的几个面试题附答案
2016/08/03 面试题
2014年政风行风工作总结
2014/11/22 职场文书
工作会议简报
2015/07/20 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android