python ftp 按目录结构上传下载的实现代码


Posted in Python onSeptember 12, 2018

具体代码如下所示:

#!/usr/bin/python
# coding=utf-8
from ftplib import FTP
import time
import os
def __ftp_upload(ftp,local,remote,isDel=False):
  if os.path.isdir(local):
    for f in os.listdir(local):
      if os.path.isdir(local+f):
        try:
          ftp.cwd(remote+f)
        except:
          ftp.mkd(remote+f)
        print local+f
        __ftp_upload(ftp,local+f+'/',remote+f+'/',isDel)
      else:
        print remote+f
        print local+f
        fp = open(local+f, 'rb')
        ftp.storbinary('STOR ' + remote + f, fp, 4096)
        fp.close()
        if (isDel==True):
          os.remove(local)
  else:
    fp = open(local+f, 'rb')
    ftp.storbinary('STOR ' + remote + f, fp, 4096)
    fp.close()
    if (isDel==True):
      os.remove(local)
def ftp_upload(host,port,username,password,local,remote,isDel=False):
  ftp = FTP()
  try:
    ftp.connect(host,port)
    ftp.login(username,password)
  except:
    return False
  try:
    __ftp_upload(ftp,local,remote,False)
  except Exception,e:
    print e
  ftp.close()
  return True
def ftp_download(host,port,username,password,local,remote):
  ftp = FTP()
  ftp.connect(host,port)
  ftp.login(username,password)
  ret = False
  try:
    if os.path.isdir(local):
      for f in ftp.dir(remote):
        fp = open(local+f, 'wb')
        ftp.retrbinary('RETR ' + remote + f, fp.write, 4096)
        fp.close()
    else:
      fp = open(local, 'wb')
      ftp.retrbinary('RETR ' + remote, fp.write, 4096)
      fp.close()
    ret = True
  except Exception,e:
    print ("download exception:\n",e)
  ftp.close()
  return ret
if __name__=='__main__':
  host = '*.*.*.*'
  port = '21'
  username = 'xxx'
  password = 'xxx'
  ftp_upload(host,port,username,password,'/home/pi/work/xx/','/home/ubuntu/xx/',False)
  print 'download'
  ftp_download(host,port,username,password,'/home/pi/work/xx/hh.txt','/home/ubuntu/xx/hh.txt')

只完成了按目录结构上传,下载还没弄好。

补充:下面看下Python ftp 上传和下载

工具

python3
ftplib

上传

from ftplib import FTP
ftp = FTP(host='127.0.0.1', user='test', passwd='test') #创建
ftp.cwd('/home/test/ftp/') #上传路径
fd = open('test.txt', 'rb') #以只读的方式打开要上传的文件
ftp.storbinary('STOR test.txt', fd) #上传文件
fd.close()
ftp.quit() #退出登录
ftp.close() #关闭连接

下载

from ftplib import FTP
ftp = FTP(host='127.0.0.1', user='test', passwd='test') #创建
ftp.cwd('/home/test/ftp/') #服务器下载路径
fd = open('test.txt', 'wb') #以只写的方式打开要下载的文件
ftp.retrbinary('RETR test.txt', fd.write, 2048) #下载文件
fd.close()
ftp.quit() #退出登录
ftp.close() #关闭连接

总结

以上所述是小编给大家介绍的jpython ftp 按目录结构上传下载的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python模块学习 re 正则表达式
May 19 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python连接DB2数据库
Aug 27 Python
Python使用sorted排序的方法小结
Jul 28 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
对Python实现累加函数的方法详解
Jan 23 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
python3 kubernetes api的使用示例
Jan 12 Python
Python Django框架介绍之模板标签及模板的继承
May 27 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 #Python
python创建文件备份的脚本
Sep 11 #Python
python实现飞机大战
Sep 11 #Python
pygame实现简易飞机大战
Sep 11 #Python
python实现飞机大战微信小游戏
Mar 21 #Python
python实现微信小程序自动回复
Sep 10 #Python
python中map的基本用法示例
Sep 10 #Python
You might like
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
JavaScript如何自定义trim方法
2015/07/28 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
Python实现的数据结构与算法之队列详解
2015/04/22 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Django中的forms组件实例详解
2018/11/08 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python通过实例讲解反射机制
2019/10/17 Python
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
庆中秋节主题活动方案
2014/02/03 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
加薪申请报告范本
2015/05/15 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
Python实现日志实时监测的示例详解
2022/04/06 Python