import multiprocessing
import os
defcopy_file
(q,file_name,old_folder_name,new_folder_name)
: old_f =
open
(old_folder_name +
"/"+ file_name,
'rb'
) content = old_f.read(
) old_f.close(
) new_f =
open
(new_folder_name +
"/"+ file_name,
'wb'
) new_f.write(content)
new_f.close(
)# 如果拷貝完了檔案,那麼就向佇列中寫入乙個訊息,表示已經完成
q.put(file_name)
defmain()
:# 1.獲取使用者要copy的資料夾的名字
global new_folder_name
old_folder_name =
input
("請輸入要copy的資料夾的名字:"
)# 2.建立乙個新的資料夾
try:
new_folder_name = old_folder_name +
'[副件]'
os.mkdir(new_folder_name)
except
:pass
# 3.獲取資料夾的所有的待copy的檔案名字 listdir
file_names = os.listdir(old_folder_name)
# print(file_names)
# 4.建立程序池
po = multiprocessing.pool(5)
# 5.建立佇列
q = multiprocessing.manager(
).queue(
)# 6.向程序池中新增copy檔案的任務
for file_name in file_names:
(q,file_name,old_folder_name,new_folder_name)
) po.close(
)# po.join()
all_file_name =
len(file_names)
copy_ok_num =
0while
true
:# 如果不將佇列中的檔名拿出來,主程序會直接結束
file_name = q.get(
)# print('已經完成copy: %s' % file_name)
copy_ok_num +=
1print
("\r拷貝的進度為: %.2f %%"
%(copy_ok_num*
100/ all_file_name)
,end='')
if copy_ok_num >= all_file_name:
break
if __name__ ==
'__main__'
: main(
)
多程序拷貝檔案(不拷貝資料夾)
from multiprocessing import pool,manager import os def copyfiletask name,oldfoldername,newfoldername,queue 完成copy乙個檔案的功能 fr open oldfoldername name fw...
資料夾拷貝器
本次的資料夾拷貝器使用的是多程序,並且用到了程序間的通訊來進行進度條的顯示。而且用到了with的開啟檔案寫法。import multiprocessing import os def file copy q,file name,old folder,new folder with open old ...
Python資料夾copy器(多程序版)
import multiprocessing import os import time import random defcopy file queue,file name,source folder name,dest folder name copy檔案到指定的路徑 f read open s...