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 相关文章推荐
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
python自带的http模块详解
Nov 06 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 Python
python五子棋游戏的设计与实现
Jun 18 Python
python实现最大优先队列
Aug 29 Python
python conda操作方法
Sep 11 Python
python抓取多种类型的页面方法实例
Nov 20 Python
python如何实现复制目录到指定目录
Feb 13 Python
基于Tensorflow一维卷积用法详解
May 22 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
python实现银行账户系统
Feb 22 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
Python常用列表数据结构小结
2014/08/06 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python读写zip压缩文件的方法
2018/08/29 Python
python flask安装和命令详解
2019/04/02 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
大学生求职信范文应怎么写
2014/01/01 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
团员个人总结
2015/02/26 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
小学教师教学随笔
2015/08/14 职场文书
安全生产学习心得体会
2016/01/18 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP