1. # -*- coding: utf-8 -*-
  2. __author__ = 'louis'
  3.  
  4. from ftplib import FTP
  5. import multiprocessing
  6. import time
  7.  
  8. def ftpconnect():
  9. ftp = FTP()
  10. timeout = 30
  11. port = 22
  12. ftp.connect('localhost',port,timeout) # 连接FTP服务器
  13. ftp.login('user','password') # 登录
  14. return ftp
  15.  
  16. def upload(FileName, FileLocalation):
  17. ftp = ftpconnect()
  18. # print ftp.getwelcome() # 获得欢迎信息
  19. ftp.cwd(r"") # 设置FTP路径
  20. for i in range(len(FileName)):
  21. print "%s The start of upload, %s" % (time.ctime(),FileName[i])
  22. fp = open(FileLocalation[i], 'rb')
  23.  
  24. ftp.storbinary('STOR ' + FileName[i], fp)
  25. fp.close()
  26. print "%s The end of the %s" % (time.ctime(), FileName[i])
  27. ftp.quit() # 退出FTP服务器
  28.  
  29. def download(FileName, FilePath):
  30. ftp = ftpconnect()
  31. ftp.cwd(r"") # 设置FTP路径
  32. for i in range(len(FileName)):
  33. print "%s The start of downloading, %s" % (time.ctime(), FileName[i])
  34. file_handle = open(FilePath[i], 'w').write
  35.  
  36. ftp.retrbinary("RETR " + FileName[i], file_handle)
  37. print "%s The end of the %s" % (time.ctime(), FileName[i])
  38.  
  39. ftp.quit()
  40.  
  41. if __name__=='__main__':
  42. # 上传视频文件到服务器 前提是在c:\te中,已经有1000个视频文件,它们的名字分别是1.avi, 2.avi. 3.avi, ..., 1000.avi
  43. # p = [None]*1000
  44. # filelocal = r'c:\Te'
  45. #
  46. # for i in range(20):
  47. # baiWei = i * 50
  48. # filename = [None] * 50
  49. # filelocalation = [None] * 50
  50. # for j in range(50):
  51. # filename_pre = baiWei + j + 1
  52. # filename[j] = "%s.avi" % filename_pre
  53. # filelocalation[j] = filelocal + "\\" + filename[j]
  54. # print filelocalation
  55. # p[i] = multiprocessing.Process(target=upload, args=(filename, filelocalation))
  56. #
  57. # for i in range(20):
  58. # p[i].start()
  59.  
  60. # 下载视频文件到本地, 前提是ftp服务器中已经有100个视频文件,它们的名字是1.avi, 2.avi, 3.avi, ..., 100.avi
  61. p = [None]*100
  62. fileDir = r'D:\local'
  63. for i in range(10):
  64. shiWei = i * 10
  65. fileName = [None]*10
  66. filePath = [None]*10
  67. for j in range(10):
  68. fileName_pre = shiWei + j + 1
  69. fileName[j] = "%s.avi" % fileName_pre
  70. filePath[j] = fileDir + "\\" + fileName[j]
  71. print filePath
  72. p[i] = multiprocessing.Process(target=download, args=(fileName, filePath))
  73.  
  74. for i in range(10):
  75. p[i].start()

Python 用多线程上传和下载文件的更多相关文章

  1. 使用python操作FTP上传和下载

    函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...

  2. SecureCRT上传和下载文件

    SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...

  3. 11、只允许在主目录下上传和下载文件,不允许用putty登录

    创建用户xiao,   使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...

  4. 每天一个linux命令(26):用SecureCRT来上传和下载文件

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...

  5. 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!

    利用SecureCRT上传.下载文件(使用sz与rz命令),超实用! 文章来源:http://blog.csdn.net/dongqinliuzi/article/details/39623169 借 ...

  6. Linux--用SecureCRT来上传和下载文件

    SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由 ...

  7. secureCRT简单上传、下载文件记录

    secureCRT简单上传.下载文件记录: 1)sz下载 -y 覆盖 2)rz上传 -y 覆盖 3)以上两个命令属于安装时包含在“Dial-up Networking Support"组中 ...

  8. 每天一个linux命令(26)--用SecureCRT来上传和下载文件

    用SSH管理Linux 服务器时经常需要远程与本地之间交互文件,而直接使用 SecureCRT 自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmod ...

  9. 每天一个linux命令(26):用SecureCRT来上传和下载文件(转载自竹子)

    用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...

随机推荐

  1. linux 第八章 高级键盘

    1.clear:清屏 2.history:显示历史命令列表 3.Ctrl+A:移动光标到行首 4.Ctrl+E:移动光标到行尾 5.Ctrl+F:光标向前移动一个字符 6.Ctrl+B:光标向h后移动 ...

  2. PIE SDK K-Means分类

    1.算法功能简介 K-Means 算法的基本思想是:以空间中 k 个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果. 算法首先随机从数据集中选 ...

  3. ORACLE--12C--多租户体系架构概念

    一,概念 1,何为多租户? 官网链接: 飞机直达>> 多租户这个概念并不是12C的新特性,而是体系架构,多租户架构使得oracle 数据库成为了一个多租户的容器数据库,也就是contain ...

  4. Oracle RAC集群搭建(六)--ASM创建oradata的磁盘组

    一,查看实例环境 su - grid env|grep ORA 发现连接空实例 改环境 到这里检测就完成了 二,配置安装 grid 用户输入asmca ASM数据盘就创建好了      

  5. ELK 插件(一) ---- head

    一, 插件介绍 01, ElasticSearch Head是什么? ElasticSearch Head是集群管理.数据可视化.增删查改.查询语句可视化工具.可以对集群进行傻瓜式操作.你可以通过插件 ...

  6. Ubuntu以及CentOS7修改ssh端口号详细步骤

    1.Ubuntu修改ssh端口号步骤: 1.修改sshd.config文件.执行vim etc/ssh/sshd_config.增加上我们需要增加的ssh的端口号.图例增加了5309的端口号. ESC ...

  7. PHP配置错误信息回报的等级

    Error_reporting:配置错误信息回报的等级  1       E_ERROR              致命的运行错误  2      E_WARNING           运行时警告( ...

  8. Javascript 简单实现鼠标拖动DIV

    http://zhangbo-peipei-163-com.iteye.com/blog/1740078 比较精简的Javascript拖动效果函数代码 http://www.jb51.net/art ...

  9. C#学习基础(1)命名约定

    c#语言规范建议使用特定大小写约定创建字标识符 Pascal 大小写     标识符中每个单词的首字母大写   用于类型名和成员名  例如:CarDeck,FirstName Camel 大小写   ...

  10. npm安装gulp-sass失败处理办法

    最近在做一个基于gulp的前端自动化的项目,在github上拉取代码后,按照正常的流程,首先我们要 npm  install ,在安装的过程中,一直提示我gulp-sass 安装失败,我用尽了好多办法 ...