import multiprocessing
import os
import time
import random
defcopy_file
(queue, file_name, source_folder_name, dest_folder_name)
:"""copy檔案到指定的路徑"""
f_read =
open
(source_folder_name +
"/"+ file_name,
"rb"
) f_write =
open
(dest_folder_name +
"/"+ file_name,
"wb"
)while
true
: time.sleep(random.random())
content = f_read.read(
1024
)if content:
f_write.write(content)
else
:break
f_read.close(
) f_write.close(
)# 傳送已經拷貝完畢的檔案名字
queue.put(file_name)
defmain()
:# 獲取要複製的資料夾
source_folder_name =
input
("請輸入要複製資料夾名字:"
)# 整理目標資料夾
dest_folder_name = source_folder_name +
"[副本]"
# 建立目標資料夾
try:
os.mkdir(dest_folder_name)
except
:pass
# 如果資料夾已經存在,那麼建立會失敗
# 獲取這個資料夾中所有的普通檔名
file_names = os.listdir(source_folder_name)
# 建立queue
queue = multiprocessing.manager(
).queue(
)# 建立程序池
pool = multiprocessing.pool(3)
for file_name in file_names:
# 向程序池中新增任務
(queue, file_name, source_folder_name, dest_folder_name)
)# 主程序顯示進度
pool.close(
) all_file_num =
len(file_names)
while
true
: file_name = queue.get(
)if file_name in file_names:
file_names.remove(file_name)
copy_rate =
(all_file_num -
len(file_names))*
100/ all_file_num
print
("\r%.2f...(%s)"
%(copy_rate, file_name)
+" "*50
, end="")
if copy_rate >=
100:
break
print()
if __name__ ==
"__main__"
: main(
)
python資料夾copy器(多程序版)
本節的練習的要求如下 如下 import multiprocessing import os import time import random def copy file q,file name,source folder name,dest folder name 拷貝檔案 print 正在拷貝...
python應用 資料夾copy器(多程序版)
import multiprocessing import os import time import random def copy file queue,file name,source folder name,dest folder name copy檔案到指定的路徑 f read open ...
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...