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