多工資料夾複製

2021-10-02 11:21:22 字數 3189 閱讀 9006

高階程式設計技巧 學習筆記

1.1、簡單實現

獲取使用者要複製的資料夾名字

建立乙個新的資料夾

獲取資料夾的所有待拷貝的檔案名字

建立程序池

新增拷貝任務

import multiprocessing

import os

defcopy_file

(q, file_name, old_folder_name, new_folder_name)

:with

open

(old_folder_name +

"/"+ file_name,

"rb"

)as f:

content = f.read(

)with

open

(new_folder_name +

"/"+ file_name,

"wb"

)as w:

w.write(content)

print

(f"拷貝 檔案完成!"

) q.put(

)def

main()

:# 獲取要複製的資料夾名字

old_folder_name =

input

("請輸入要複製的資料夾名字: "

)# 建立乙個新資料夾

new_folder_name = old_folder_name +

" 備份"

# 如果資料夾不存在則建立

ifnot os.path.exists(new_folder_name)

: os.mkdir(new_folder_name)

# 獲取要複製資料夾的所有帶拷貝的檔案名字

file_names = os.listdir(old_folder_name)

# print(file_names)

# 建立程序池、佇列

po = multiprocessing.pool(5)

q = multiprocessing.manager(

).queue(

)print

("\n開始備份...\n"

)# 新增拷貝任務

for file_name in file_names:

(q, file_name, old_folder_name, new_folder_name)

) po.close(

) po.join(

)print

("\n備份完成!\n"

)if __name__ ==

'__main__'

: main(

)

1.2、新增進度條

import multiprocessing

import os

import time

defcopy_file

(q, file_name, old_folder_name, new_folder_name)

:# 讀取檔案

with

open

(old_folder_name +

"/"+ file_name,

"rb"

)as f:

content = f.read(

)# 儲存到新檔案

with

open

(new_folder_name +

"/"+ file_name,

"wb"

)as w:

w.write(content)

# print(f"拷貝 檔案完成!")

q.put(file_name)

defmain()

:# 獲取要複製的資料夾名字

old_folder_name =

input

("請輸入要複製的資料夾名字: "

)# 建立乙個新資料夾

new_folder_name = old_folder_name +

" 備份"

# 如果資料夾不存在則建立

ifnot os.path.exists(new_folder_name)

: os.mkdir(new_folder_name)

# 獲取要複製資料夾的所有帶拷貝的檔案名字

file_names = os.listdir(old_folder_name)

# print(file_names)

# 建立程序池、佇列

po = multiprocessing.pool(5)

q = multiprocessing.manager(

).queue(

)print

("\n開始備份...\n"

)# 新增拷貝任務

for file_name in file_names:

(q, file_name, old_folder_name, new_folder_name)

) po.close(

)# po.join()

file_count =

len(file_names)

copy_file_num =

0 a =

'>'

while

true

: file_name = q.get(

) copy_file_num +=1if

(copy_file_num%5==

0): a +=

'>'

# print(f"\r拷貝的進度 %", end="")

print

("\r%s %f%%"

%(a, copy_file_num*

100/file_count)

, end="")

time.sleep(

0.05

)if copy_file_num >= file_count:

break

print

("\n\n備份完成!"

)if __name__ ==

'__main__'

: main(

)

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...

檔案 資料夾複製

通道對通道複製效率高 param f1 原始檔 param f2 目的檔案 return throws exception public static long forchannel file f1,file f2 throws exception if inc.size inc.position ...

複製資料夾函式

函式名稱 copydir 函式功能 複製資料夾 函式返回 bool 如果是true,複製成功,否則失敗。引數說明 param cstring strsrcpath 源資料夾 param cstring strdstpath 目標資料夾 bool copydir cstring strsrcpath,...