您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎么在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的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
看完上述內容,你們對怎么在python中利用多進程實現文件下載傳輸功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。