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框架使用入门指引
Apr 15 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
python实现飞机大战微信小游戏
Mar 21 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
使用python turtle画高达
Jan 19 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
keras topN显示,自编写代码案例
Jul 03 Python
浅析Python迭代器的高级用法
Jul 16 Python
python下载的库包存放路径
Jul 27 Python
有关pycharm登录github时有的时候会报错connection reset的问题
Sep 15 Python
python中filter,map,reduce的作用
Jun 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中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
完美的php分页类
2017/10/24 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
vue-test-utils初使用详解
2019/05/23 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
Python中的zipfile模块使用详解
2015/06/25 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
简单谈谈python中的语句和语法
2017/08/10 Python
Python文件和流(实例讲解)
2017/09/12 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
绿色学校实施方案
2014/03/31 职场文书
爱情保证书大全
2014/04/29 职场文书
2015年党员自评材料
2014/12/17 职场文书
维稳工作承诺书
2015/01/20 职场文书
python基础之类方法和静态方法
2021/10/24 Python