資料夾copy器 (用程序池實現)

2021-10-02 01:12:46 字數 1788 閱讀 5460

#!/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...