溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在python中利用多進程實現文件下載傳輸功能

發布時間:2021-05-22 17:20:49 來源:億速云 閱讀:302 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關怎么在python中利用多進程實現文件下載傳輸功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

需求:

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

模塊:

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")
  # 創建新文件
  new_file = open(os.path.join(new_dir,file_name),"wb")
  # 循環將內容寫入新文件
  while True:
    # 單行讀取
    data = old_file.readline()
    # 如果有內容寫入否則退出
    if data:

      new_file.write(data) 
    else:
      break

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

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

  new_dir = "備份"+old_dir

  os.mkdir(new_dir)
  # 列出文件夾內的文件列表
  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))
    # 創建子進程
    pro.start()
  # 定義變量用以計數
  num = 0
  while True:
    # 取出隊列中的值
    queue.get()
    # 計數器+1
    num += 1
    # 打印下載進度
    print("\r文件已下載%.2f %%" % (num/len(file_list)*100),end="")
    # 如果計數等于文件長度提示完成退出
    if num == len(file_list):
      print("文件下載完成")
      break
if __name__ == "__main__":

  main()

python的五大特點是什么

python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。

看完上述內容,你們對怎么在python中利用多進程實現文件下載傳輸功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女