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执行外部程序的常用方法小结
Mar 21 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
python爬取NUS-WIDE数据库图片
Oct 05 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python定时器实例代码
Nov 01 Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 Python
解决python DataFrame 打印结果不换行问题
Apr 09 Python
Django URL参数Template反向解析
Nov 24 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
Python面向对象之成员相关知识总结
Jun 24 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
星际中的相关伤害
2020/03/04 星际争霸
php4的session功能评述(三)
2006/10/09 PHP
PHP之变量、常量学习笔记
2008/03/27 PHP
解析PHP中ob_start()函数的用法
2013/06/24 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
vuex 的简单使用
2018/03/22 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
JavaScript闭包原理与用法学习笔记
2020/05/29 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python xml解析实例详解
2016/11/14 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
python执行精确的小数计算方法
2019/01/21 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
医院护士专业个人的求职信
2013/12/09 职场文书
管理提升方案
2014/06/04 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
2015年质检工作总结
2015/05/04 职场文书
小学作文之描写天气
2019/08/15 职场文书