檔案拷貝器之多程序

2022-08-02 06:18:10 字數 2195 閱讀 2170

import

osimport

multiprocessing

import

time,random

"""檔案拷貝器

1.取得原始檔

2.直接命名目標資料夾,在原檔案加[副本]

3.建立目標檔案將愛

4.取得要拷貝的資料夾中的所有檔名

5.通過程序池去執行每乙個檔案拷貝任務

6.準備乙個還是你好俗,實現檔案拷貝任務

7.關閉程序池

8.執行完程序池中的所有任務

9.顯示拷貝進度

"""def

copy_file(source_files_name,dest_file_name,file_name,queue):

#1.開啟原始檔

#資料夾/檔案

read_file=open(source_files_name+'

/'+file_name,"rb"

)

#2.建立或者開啟目標檔案

write_file=open(dest_file_name+"

/"+file_name,"wb"

)

#3.迴圈讀寫資料

while

true:

time.sleep(random.random())

content=read_file.read()

ifcontent:

write_file.write(content)

else

:

break

#關閉檔案

read_file.close()

write_file.close()

#檔案拷貝完了,將拷貝完的檔名傳送到佇列中

queue.put(file_name)

#顯示拷貝進度

defcopy_cate(file_names,queue):

#1.取得要拷貝檔案的總數

total_nums=len(file_names)

#當前拷貝的檔案數

copyed_nums=0

#2.不斷取得拷貝完的檔名

while

true:

copy_file_name =queue.get()

copyed_nums +=1

#3.不斷顯示拷貝進度

rate=copyed_nums/total_nums*100

print("

\r正拷貝完的檔案%s,當前的拷貝進度%0.2f%%

"%(copy_file_name,rate),end=''

)

#r若檔案拷貝完成

if copyed_nums ==total_nums:

break

defmain():

#檔案路徑

root_path="

e:\python複習"#

1.取得源資料夾

source_files_name = root_path+input("

請輸入要拷貝的資料夾:")

#2.直接命名目標資料夾,在源資料夾夾[副本]

dest_files_name=source_files_name+'

[副本]'#

3.建立資料夾

try:

os.mkdir(dest_files_name)

except

:

pass

#4.取得要拷貝的資料夾的所有檔名

file_names=os.listdir(source_files_name)

#5.通過程序池去執行每乙個檔案拷貝任務

#建立佇列

queue=multiprocessing.manager().queue()

#建立程序池

pool=multiprocessing.pool()

#遍歷檔案列表

for file_name in

file_names:

#關閉程序池

pool.close()

#阻塞程序

#pool.join()

#顯示拷貝進度

copy_cate(file_names,queue)

if__name__ == '

__main__':

main()

多程序檔案拷貝

下面用程式實現這樣的功能 有乙個檔案的內容需要拷貝到另乙個檔案中,以前的做法是用乙個程序來完成,下面要做的是,是兩個程序同時做這件事,乙個程序負責一半,如父程序負責拷貝檔案的前半段,子程序負責拷貝檔案的後半段。下面看一下程式的流程以及需要注意的問題 其中 要注意的是當父程序呼叫fork函式建立子程序...

Linux之多程序拷貝與多執行緒拷貝

讓我們開始編寫 吧 include include include include include include include include intcutting char src,int n int len lseek fd,0,seek end 獲取檔案位元組數 if len n 0 el...

多程序實現檔案拷貝

import multiprocessing import os import shutil 拷貝檔案任務 filename 檔名 src dir 源目錄 dst dir 目標目錄 def copy file file name,src dir,dst dir 原始檔的路徑 src file pat...