資料夾拷貝器

2021-09-01 02:21:57 字數 1502 閱讀 4308

本次的資料夾拷貝器使用的是多程序,並且用到了程序間的通訊來進行進度條的顯示。而且用到了with的開啟檔案寫法。

import multiprocessing

import os

def file_copy(q,file_name,old_folder,new_folder):

with open(old_folder +"\\" + file_name,'rb') as f:

content = f.read()

# print("------檔案%s讀取成功----" % file_name)

with open(new_folder + "\\" + file_name +"--tangsai--","wb") as f_new:

f_new.write(content)

# print("------檔案%s寫入成功----" % file_name)

# q.put(1)

q.put(file_name)

def main():

#建立程序池,然後建立訊息佇列

po = multiprocessing.pool(4)

q = multiprocessing.manager().queue()

old_folder = input("請輸入要複製的目錄:")

new_folder = input("請輸入要複製到的目錄:")

#使用try可以避免當資料夾存在的時候報錯,不過當目錄存在裡面卻有檔案的時候,其實應該進行改名備份

try:

os.mkdir(new_folder)

print("目錄建立完成----")

except:

pass

target_files = os.listdir(old_folder)

#利用迴圈呼叫程序池

for file_name in target_files:

print("-----開始複製檔案:%s " % file_name)

po.close()

# po.join()

#進行顯示方面的優化

all_file_number = len(target_files)

copy_ok = 0

while true:

file_name_get = q.get()

# print("已經完成檔案的複製:%s" % file_name_get)

copy_ok +=1

print("\r拷貝進度為:%.2f%%" % (copy_ok*100/all_file_number),end="")

if copy_ok >= all_file_number:

break

print("")

if __name__ == "__main__":

main()

這個指令碼的缺陷在於,對於目錄的檔案路徑名沒有處理好,輸入複雜

此外對於目錄的遞迴也沒有做,只是單純的拷貝檔案

拷貝資料夾

需要引用命名空間 using system.io 拷貝資料夾 包括子資料夾 到指定資料夾下,源資料夾和目標資料夾均需絕對路徑.格式 copyfolder 源資料夾,目標資料夾 public static void copyfolder string strfrompath,string strtop...

拷貝資料夾

需要引用命名空間 using system.io 拷貝資料夾 包括子資料夾 到指定資料夾下,源資料夾和目標資料夾均需絕對路徑.格式 copyfolder 源資料夾,目標資料夾 public static void copyfolder string strfrompath,string strtop...

VB拷貝檔案,拷貝資料夾

vb拷貝檔案,拷貝資料夾 1 新增引用microsoft scripting runtime 方法 選擇選單 工程 引用 選擇 microsoft scripting runtime 2 使用方法 option explicit private sub form load dim filesys a...