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中__str__和__repr__方法的区别
Apr 17 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Python多进程原理与用法分析
Aug 21 Python
python实现n个数中选出m个数的方法
Nov 13 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
Tensorflow限制CPU个数实例
Feb 06 Python
keras的ImageDataGenerator和flow()的用法说明
Jul 03 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
Vue父组件监听子组件生命周期
2020/09/03 Javascript
Python中文编码那些事
2014/06/25 Python
详解Python中的各种函数的使用
2015/05/24 Python
python中学习K-Means和图片压缩
2017/11/20 Python
关于python字符串方法分类详解
2019/08/20 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
小学生倡议书范文
2014/05/13 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
2014和解协议书范文
2014/09/15 职场文书
作风整顿剖析材料
2014/09/30 职场文书
明星邀请函
2015/02/02 职场文书
员工担保书范本
2015/09/22 职场文书
五年级作文之成长
2019/09/16 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL