使用python多进程快速复制文件夹-创新互联

from multiprocessing import Pool,Manager
import os,sys
import time
import argparse

成都创新互联公司是一家集网站建设,屯昌企业网站建设,屯昌品牌网站建设,网站定制,屯昌网站建设报价,网络营销,网络优化,屯昌网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

def recvParameter():
parse = argparse.ArgumentParser()
parse.add_argument("-s","--src",dest="src_base_folder",required=True,help="Enter source folder path")
parse.add_argument("-d","--des",dest="des_base_folder",required=True,help="Enter destination folder path")
parse.add_argument("-p","--pcount",dest="pcount",type=int,default=5,help="The count of process")
args = parse.parse_args()
if not (os.path.isdir(args.src_base_folder) and os.path.isdir(args.des_base_folder)):
print("%s or %s is not exists" %(args.src_base_folder,args.des_base_folder))
sys.exit(-1)
return args

def getTotalSize(dir):
size = 0
for root, dirs, files in os.walk(dir):
size += sum([os.path.getsize(os.path.join(root, name)) for name in files])
return size

def printProcessBar(l):
rate = (sum(l)-l[0])/l[0]
print("\r %.2f%%" %(rate*100),end="")

def fileHandle(fileFullName,src_base_folder,des_base_folder,l):
src_file = fileFullName
des_file = fileFullName.replace(src_base_folder,des_base_folder)
des_file_folder = os.path.dirname(des_file)
if not os.path.exists(des_file_folder):
os.makedirs(des_file_folder)
fw = open(des_file,"w+")
with open(src_file,"r") as f:
while True:
content = f.read(1024)
if not content:
break
fw.write(content)
fw.close()
l.append(os.path.getsize(src_file))
return l

def main():
args = recvParameter()
src_base_folder=args.src_base_folder
des_base_folder=args.des_base_folder
pool = Pool(args.pcount)
begintime = time.time()
manager=Manager()
d = manager.dict()
l = manager.list()
l.append(getTotalSize(src_base_folder))
for base_path,dirs,files in os.walk(src_base_folder):
for file in files:
fileFullName = os.path.join(base_path,file)
pool.apply_async(func=fileHandle,args=(fileFullName,src_base_folder,des_base_folder,l),callback=printProcessBar)

pool.close()
pool.join()
endtime = time.time()
print("\ntotalTime=%s" %(endtime-begintime))

if name == "main":
main()

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享标题:使用python多进程快速复制文件夹-创新互联
文章地址:https://www.cdcxhl.com/article34/cephpe.html

成都网站建设公司_创新互联,为您提供建站公司静态网站网站收录移动网站建设域名注册搜索引擎优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化