• Python 用多线程上传和下载文件


     1 # -*- coding: utf-8 -*-
     2 __author__ = 'louis'
     3 
     4 from ftplib import FTP
     5 import multiprocessing
     6 import time
     7 
     8 
     9 def ftpconnect():
    10     ftp = FTP()
    11     timeout = 30
    12     port = 22
    13     ftp.connect('localhost',port,timeout) # 连接FTP服务器
    14     ftp.login('user','password') # 登录
    15     return ftp
    16 
    17 def upload(FileName, FileLocalation):
    18     ftp = ftpconnect()
    19     # print ftp.getwelcome() # 获得欢迎信息
    20     ftp.cwd(r"") # 设置FTP路径
    21     for i in range(len(FileName)):
    22         print "%s The start of upload, %s" % (time.ctime(),FileName[i])
    23         fp = open(FileLocalation[i], 'rb')
    24 
    25         ftp.storbinary('STOR ' + FileName[i], fp)
    26         fp.close()
    27         print "%s The end of the %s" % (time.ctime(), FileName[i])
    28     ftp.quit() # 退出FTP服务器
    29 
    30 def download(FileName, FilePath):
    31     ftp = ftpconnect()
    32     ftp.cwd(r"") # 设置FTP路径
    33     for i in range(len(FileName)):
    34         print "%s The start of downloading, %s" % (time.ctime(), FileName[i])
    35         file_handle = open(FilePath[i], 'w').write
    36 
    37         ftp.retrbinary("RETR " + FileName[i], file_handle)
    38         print "%s The end of the %s" % (time.ctime(), FileName[i])
    39 
    40     ftp.quit()
    41 
    42 
    43 if __name__=='__main__':
    44     # 上传视频文件到服务器  前提是在c:	e中,已经有1000个视频文件,它们的名字分别是1.avi, 2.avi. 3.avi, ..., 1000.avi
    45     # p = [None]*1000
    46     # filelocal = r'c:Te'          
    47     #
    48     # for i in range(20):
    49     #     baiWei = i * 50
    50     #     filename = [None] * 50
    51     #     filelocalation = [None] * 50
    52     #     for j in range(50):
    53     #         filename_pre = baiWei + j + 1
    54     #         filename[j] = "%s.avi" % filename_pre
    55     #         filelocalation[j] = filelocal + "\" + filename[j]
    56     #     print filelocalation
    57     #     p[i] = multiprocessing.Process(target=upload, args=(filename, filelocalation))
    58     #
    59     # for i in range(20):
    60     #     p[i].start()
    61 
    62 
    63     # 下载视频文件到本地,  前提是ftp服务器中已经有100个视频文件,它们的名字是1.avi, 2.avi, 3.avi, ..., 100.avi
    64     p = [None]*100
    65     fileDir = r'D:local'
    66     for i in range(10):
    67         shiWei = i * 10
    68         fileName = [None]*10
    69         filePath = [None]*10
    70         for j in range(10):
    71             fileName_pre = shiWei + j + 1
    72             fileName[j] = "%s.avi" % fileName_pre
    73             filePath[j] = fileDir + "\" + fileName[j]
    74         print filePath
    75         p[i] = multiprocessing.Process(target=download, args=(fileName, filePath))
    76 
    77     for i in range(10):
    78         p[i].start()
    79     
  • 相关阅读:
    20080619 SQL SERVER 输入 NULL 的快捷键
    20090406 Adobe的“此产品的许可已停止工作”错误的解决办法
    20080908 Office Powerpoint 2007 不能输入中文的解决办法
    20080831 ClearGertrude Blog Skin 's cnblogs_code class
    20080603 Facebook 平台正式开放
    20080519 安装 Microsoft SQL Server 2000 时提示 创建挂起的文件操作
    test
    Linux—fork函数学习笔记
    SOA的设计理念
    Why BCP connects to SQL Server instance which start with account of Network Service fail?
  • 原文地址:https://www.cnblogs.com/haoshine/p/5125655.html
Copyright © 2020-2023  润新知