def downmultfile(self, remoteHost, remoteport, loginname, loginpassword, remotePath, localPath, filename, filesize, block_size, del_part_file_able, mult_taskcount=None): # TODO 判断本地文件是否存在 if FileUtils.CheckFileExists(localPath): lfilesize = FileUtils.GetFileSize(localPath) print(datetime.now(), filename, "本地文件size", filesize) if lfilesize == filesize: print(datetime.now(), filename, "本地文件已存在") else: mult_file_name = FileUtils.GetFileName(localPath) print(mult_file_name, ) FileUtils.Mkdirs(mult_file_name + "/") part_file_count = math.ceil(float(filesize) / block_size) # 分片文件数 part_file_end = part_file_count - 1 part_file_names = list() if mult_taskcount == None: mult_taskcount = part_file_count mult_threadPool = ThreadPoolExecutor( max_workers=mult_taskcount, thread_name_prefix="mult_ftp_down_task_") for i in range(part_file_count): part_file_name = mult_file_name + "/" + filename + "_part" + str( i) part_file_names.append(part_file_name) part_file_start_size = i * block_size part_file_size = block_size if i == part_file_end: part_filesize = filesize - part_file_start_size mult_threadPool.submit(MyFTP().downloadbymulti_thread, remoteHost, remoteport, loginname, loginpassword, remotePath, part_file_name, part_file_start_size, part_file_size) mult_threadPool.shutdown(wait=True) print(datetime.now(), filename, "part文件全部下载完毕") # print(datetime.now(), filename, "开始合并") FileUtils.MergFile(part_file_names, localPath, filesize, block_size, part_file_count, part_file_end, del_part_file_able, mult_file_name) # del #开始上传文件 print(datetime.now(), filename, "开始上传") UploadFile(filename, filesize, localPath, localPath)