欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python多進程實現(xiàn)文件下載傳輸功能

 更新時間:2018年07月28日 10:29:11   作者:WangF0  
這篇文章主要為大家詳細介紹了python多進程實現(xiàn)文件下載傳輸功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python多進程實現(xiàn)文件下載傳輸功能的具體代碼,供大家參考,具體內(nèi)容如下

需求:

實現(xiàn)文件夾拷貝功能(包括文件內(nèi)的文件),并打印拷貝進度

模塊:

os模塊
multiprocessing 模塊

代碼:

import multiprocessing
import os


def deal_file(old_dir,new_dir,file_name,queue):
  # 打開以存在文件
  old_file = open(os.path.join(old_dir,file_name),"rb")
  # 創(chuàng)建新文件
  new_file = open(os.path.join(new_dir,file_name),"wb")
  # 循環(huán)將內(nèi)容寫入新文件
  while True:
    # 單行讀取
    data = old_file.readline()
    # 如果有內(nèi)容寫入否則退出
    if data:

      new_file.write(data) 
    else:
      break

  # 關(guān)閉文件
  old_file.close()
  new_file.close()
  # 向隊列中添加值用以計數(shù),參數(shù)可填任意值
  queue.put(file_name)

def main():
  # 創(chuàng)建用戶輸入文件的備份
  old_dir = input("請輸入文件名:")

  new_dir = "備份"+old_dir

  os.mkdir(new_dir)
  # 列出文件夾內(nèi)的文件列表
  file_list = os.listdir(old_dir)

  queue = multiprocessing.Queue(128)
  for file_name in file_list:

    pro = multiprocessing.Process(target=deal_file,args=(old_dir,new_dir,file_name,queue))
    # 創(chuàng)建子進程
    pro.start()
  # 定義變量用以計數(shù)
  num = 0
  while True:
    # 取出隊列中的值
    queue.get()
    # 計數(shù)器+1
    num += 1
    # 打印下載進度
    print("\r文件已下載%.2f %%" % (num/len(file_list)*100),end="")
    # 如果計數(shù)等于文件長度提示完成退出
    if num == len(file_list):
      print("文件下載完成")
      break
if __name__ == "__main__":

  main()

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論