#!/usr/bin/env python
# -*- coding:utf-8 -*-
import multiprocessing
import os, time, random
defcopy_file
(q, file_name, old_folder_name, new_folder_name)
:"""完成copy任務"""
# print("從 %s ---》 %s ,檔名為: %s" % (old_folder_name, new_folder_name, file_name))
old_f =
open
(old_folder_name +
"/"+ file_name,
"rb"
) file_r = old_f.read(
) old_f.close(
) new_f =
open
(new_folder_name +
"/"+ file_name,
"wb"
) new_f.write(file_r)
new_f.close(
)# 若拷貝完成,則將它放入佇列
q.put(file_name)
defmain()
:# 獲取要copy的檔案的名字
old_folder_name =
input
("請輸入要copy的檔案:"
)# 建立乙個新的資料夾
try:
new_folder_name = old_folder_name +
"附件"
os.mkdir(new_folder_name)
except
:pass
# 獲取資料夾中所有待copy的檔案的名字 listdir
file_names = os.listdir(old_folder_name)
# for i in file_names:
# print("已經查詢到 %s" % (i))
# 建立程序池
po1 = multiprocessing.pool(5)
# 建立乙個佇列
q = multiprocessing.manager(
).queue(
)# 向程序池中新增copy任務
for file_name in file_names:
(q, file_name, old_folder_name, new_folder_name)
)# copy檔案
po1.close(
)# po1.join()
all_file_number =
len(file_names)
copy_ok =
0while
true
: file_name = q.get(
)# print("已經完成拷貝 %s ." % (file_name))
copy_ok +=
1print
("\r copy 的進度為 %.2f %%"%(
(copy_ok/all_file_number)
*100
), end="")
if copy_ok >= all_file_number:
break
if __name__ ==
'__main__'
: main(
)
未完待續。。。 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...
python資料夾copy器(多程序版)
本節的練習的要求如下 如下 import multiprocessing import os import time import random def copy file q,file name,source folder name,dest folder name 拷貝檔案 print 正在拷貝...
手寫用程序池複製資料夾模型
importos importshutil importmultiprocessing importtime 檔案拷貝任務 defcopy work src dir,dst dir,file name 檢視程序物件 pid multiprocessing.current process pid pr...