Python 用多线程上传和下载文件
- # -*- coding: utf-8 -*-
- __author__ = 'louis'
- from ftplib import FTP
- import multiprocessing
- import time
- def ftpconnect():
- ftp = FTP()
- timeout = 30
- port = 22
- ftp.connect('localhost',port,timeout) # 连接FTP服务器
- ftp.login('user','password') # 登录
- return ftp
- def upload(FileName, FileLocalation):
- ftp = ftpconnect()
- # print ftp.getwelcome() # 获得欢迎信息
- ftp.cwd(r"") # 设置FTP路径
- for i in range(len(FileName)):
- print "%s The start of upload, %s" % (time.ctime(),FileName[i])
- fp = open(FileLocalation[i], 'rb')
- ftp.storbinary('STOR ' + FileName[i], fp)
- fp.close()
- print "%s The end of the %s" % (time.ctime(), FileName[i])
- ftp.quit() # 退出FTP服务器
- def download(FileName, FilePath):
- ftp = ftpconnect()
- ftp.cwd(r"") # 设置FTP路径
- for i in range(len(FileName)):
- print "%s The start of downloading, %s" % (time.ctime(), FileName[i])
- file_handle = open(FilePath[i], 'w').write
- ftp.retrbinary("RETR " + FileName[i], file_handle)
- print "%s The end of the %s" % (time.ctime(), FileName[i])
- ftp.quit()
- if __name__=='__main__':
- # 上传视频文件到服务器 前提是在c:\te中,已经有1000个视频文件,它们的名字分别是1.avi, 2.avi. 3.avi, ..., 1000.avi
- # p = [None]*1000
- # filelocal = r'c:\Te'
- #
- # for i in range(20):
- # baiWei = i * 50
- # filename = [None] * 50
- # filelocalation = [None] * 50
- # for j in range(50):
- # filename_pre = baiWei + j + 1
- # filename[j] = "%s.avi" % filename_pre
- # filelocalation[j] = filelocal + "\\" + filename[j]
- # print filelocalation
- # p[i] = multiprocessing.Process(target=upload, args=(filename, filelocalation))
- #
- # for i in range(20):
- # p[i].start()
- # 下载视频文件到本地, 前提是ftp服务器中已经有100个视频文件,它们的名字是1.avi, 2.avi, 3.avi, ..., 100.avi
- p = [None]*100
- fileDir = r'D:\local'
- for i in range(10):
- shiWei = i * 10
- fileName = [None]*10
- filePath = [None]*10
- for j in range(10):
- fileName_pre = shiWei + j + 1
- fileName[j] = "%s.avi" % fileName_pre
- filePath[j] = fileDir + "\\" + fileName[j]
- print filePath
- p[i] = multiprocessing.Process(target=download, args=(fileName, filePath))
- for i in range(10):
- p[i].start()
Python 用多线程上传和下载文件的更多相关文章
- 使用python操作FTP上传和下载
函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import F ...
- SecureCRT上传和下载文件
SecureCRT上传和下载文件(下载默认目录) SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. ...
- 11、只允许在主目录下上传和下载文件,不允许用putty登录
创建用户xiao, 使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...
- 每天一个linux命令(26):用SecureCRT来上传和下载文件
用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...
- 利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!
利用SecureCRT上传.下载文件(使用sz与rz命令),超实用! 文章来源:http://blog.csdn.net/dongqinliuzi/article/details/39623169 借 ...
- Linux--用SecureCRT来上传和下载文件
SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由 ...
- secureCRT简单上传、下载文件记录
secureCRT简单上传.下载文件记录: 1)sz下载 -y 覆盖 2)rz上传 -y 覆盖 3)以上两个命令属于安装时包含在“Dial-up Networking Support"组中 ...
- 每天一个linux命令(26)--用SecureCRT来上传和下载文件
用SSH管理Linux 服务器时经常需要远程与本地之间交互文件,而直接使用 SecureCRT 自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmod ...
- 每天一个linux命令(26):用SecureCRT来上传和下载文件(转载自竹子)
用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. ...
随机推荐
- 2.4 GO Interface
package itface type Sender interface { Send(url string) string } type Geter interface { Get(url stri ...
- 文献综述八:基于JAVA的商品网站的研究
一.基本信息 标题:基于JAVA的商品网站的研究 时间:2015 出版源:信息技术 文件分类:对java语言的研究 二.研究背景 本文主要介绍了系统的分析,设计和开发的全部过程. 三.具体内容 文献的 ...
- 深入应用C++11:代码优化与工程级应用》勘误表
https://www.cnblogs.com/qicosmos/p/4562174.html
- switch case 注意事项+1 及 case合并综合练习例子
case可以合并: 练习11:根据输入的星期,得到具体每天做的事情.星期一学习,星期二学习,星期三自习,星期四学习,星期五自习,星期六学习,星期日学习 class Switch02{ public s ...
- oracle 控制文件损坏处理
一, 故障模拟 控制文件损坏 发现关闭不了 强制关闭 故障恢复 发现已经执行到mont阶段,因为这个不依靠控制文件 进入整段日志 cd /u01/app/oracle/diag/rdbms/o ...
- ajax返回数据之前的loading等待
首先,我们通过ajax请求,向后台传递参数,然后后台经过一系列的运算之后向前台返还数据,我希望在等待数据成功返还之前可以展示一个loading.gif图 不废话,在页面上执行点击事件(<a sc ...
- VS 正则表达式替换内容
很少使用VS的正则替换功能,最近因为需要添加大量的默认值,但是又不想重新类,就想到了这个. 1.替换带有///描述的属性 查找的正则表达式: /// <summary>((.)*((.|\ ...
- 01.c#中的访问修饰符
public 公开的 private 私有的,只能在当前类的内部访问 protected 受保护的,只能在当前内的内部以及该类的子类可以访问. internal 可以在同一个程序(项目)集中 ...
- CTF传送门
https://www.zhihu.com/question/30505597详细见知乎 推荐书: A方向: RE for BeginnersIDA Pro权威指南揭秘家庭路由器0day漏洞挖掘技术自 ...
- SpringBoot ------ 使用AOP处理请求
一.AOP统一处理请求日志 1.spring的两大核心:AOP , IOC 2.面向对象OOP关注的是将需求功能垂直,划分为不同的,并且相对独立的, 会封装成良好的类,并且类有属于自己的行为. ...