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查找相似单词的方法
Mar 05 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
Linux下多个Python版本安装教程
Aug 15 Python
Python sorted函数详解(高级篇)
Sep 18 Python
如何用python写一个简单的词法分析器
Dec 18 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
Python 画出来六维图
Jul 26 Python
python 字符串常用方法汇总详解
Sep 16 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
10个Python面试常问的问题(小结)
Nov 20 Python
python实现从wind导入数据
Dec 03 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
PHP实现简单的计算器
2020/08/28 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
python安装scipy的步骤解析
2019/09/28 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
Python configparser模块应用过程解析
2020/08/14 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
写自荐信三大法宝
2014/01/24 职场文书
同学聚会主持词
2014/03/18 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
施工质量承诺书范文
2014/05/30 职场文书
岗位说明书怎么写
2014/07/30 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
趣味运动会简讯
2015/07/20 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书