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的Django框架中Manager方法的使用
Jul 21 Python
Python作用域用法实例详解
Mar 15 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
May 25 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
Python json转字典字符方法实例解析
Apr 13 Python
python 下载文件的几种方法汇总
Jan 06 Python
使用Pytorch训练two-head网络的操作
May 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
vue + el-form 实现的多层循环表单验证
2020/11/25 Vue.js
Python群发邮件实例代码
2014/01/03 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
QML实现钟表效果
2020/06/02 Python
学习Python需要哪些工具
2020/09/04 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
商场中秋节广播稿
2014/01/17 职场文书
端午节活动策划方案
2014/03/09 职场文书
医院保洁服务方案
2014/06/11 职场文书
新闻发布会策划方案
2014/06/12 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle