多工資料夾中的檔案copy(利用佇列和程序池)

2021-10-09 17:28:14 字數 2004 閱讀 9011

1

from multiprocessing import pool

2from multiprocessing import manager

3import os

45 def copy_file

(q,filename,old_file_name,new_file_name)

:6 #print

("模擬copy檔案從%s*****=>到%s拷貝%s檔案"

%(old_file_name,new_file_ name,filename))7

8 old_f=

open

(old_file_name+

"/"+filename,

"rb"

)9 content=old_f.

read()

10 old_f.

close()

1112 new_f=

open

(new_file_name+

"/"+filename,

"wb"

)13 new_f.

write

(content)

14 new_f.

close()

1516 q.

put(filename)

17 def main()

:18 #獲取要拷貝的資料夾的名字

19 old_file_name=

input

("請輸入要拷貝的資料夾的名字:")20

21 #建立新資料夾接受檔案

22 new_file_name=old_file_name+

"[復件]"

23try

:24 os.

mkdir

(new_file_name)

25 except:

26 pass

2728 #獲取資料夾所有待copy的檔名

29 file_names=os.

listdir

(old_file_name)

30 #print

(file_names)

3132 #建立程序池

33 po=

pool(5

)3435 #建立佇列

36 q=

manager()

.queue()

3738

for filename in file_names:

39 po.

(copy_file,args=

(q,filename,old_file_name,new_file_name ))40

41 po.

close()

42 all_fill=

len(file_names)

43 file_count=044

while true:

45 file_name=q.

get(

)46 file_count+=147

print

("\r已經copy%.2f"

%(file_count*

100/all_fill)

,end="")

48if file_count>=all_fill:

49break

50print()

51 # print

("已經完成%s 的拷貝"

%file_name)

5253

if __name__==

"__main__":54

main()

執行結果

請輸入要拷貝的資料夾的名字:test

已經copy100.

00

python多工資料夾copy顯示進度

import os import multiprocessing def copy file q,file name,old folder name,new folder name 完成檔案的複製 print 模擬copy檔案 從 s 到 s 檔名是 s old folder name,new fo...

多工資料夾複製

高階程式設計技巧 學習筆記 1.1 簡單實現 獲取使用者要複製的資料夾名字 建立乙個新的資料夾 獲取資料夾的所有待拷貝的檔案名字 建立程序池 新增拷貝任務 import multiprocessing import os defcopy file q,file name,old folder nam...

python 案例 多工copy檔案

import os import multiprocessing def copy file q,file name,old folder name,new folder name 完成檔案的複製 old f open old folder name file name,rb content old...