python3多进程写时拷贝_关于windows下使用python 多进程拷贝文件时出现拷贝空文件夹的问题...

问题是:在运行代码的时候,拷贝成功之后的文件中有部分只会拷贝文件名字,内容大小为0,如果可以还想请问一下,如果拷贝的文件里还有一个文件夹改如何修改代码以完成拷贝所有文件及文...

问题是:在运行代码的时候,拷贝成功之后的文件中有部分只会拷贝文件名字,内容大小为0,如果可以还想请问一下,如果拷贝的文件里还有一个文件夹改如何修改代码以完成拷贝所有文件及文件夹里的文件,代码如下:#根据进程池和进程间通信实现文件拷贝 from multiprocessing import Pool,Manager import os #完成拷贝文件 def copyFile(fileName,oldFilesName,newFilesName,queue): "拷贝文件函数" # print('拷贝文件名字:%s'%fileName) queue.put(fileName) fr = open(oldFilesName+'/'+fileName) fw = open(newFilesName+'/'+fileName,'w') content = fr.read() fw.write(content) # print('----------over!-------------') fr.close() fw.close() # queue.put(fileName) #这条语句放在这总会导致最后完成的那个子进程的文件无法存入队列,最终导致 程序实际上已经完成,但是不能终止!why? #由于我在linux中运行,加之以前的一些文件因为某些操作的不当,产生了.swap和.idea文件,利用一个循环实现过滤,如果有其他的干扰文件也可以用同样的方法过滤 def solute(temp_data): temps=[] for temp in temp_data: if (temp.split('.')[-1] == swap or temp.split('.')[-1] == idea): continue else: temps.append(temp) return temps def main(): #1、提示用户输入要拷贝的文件 oldFilesName = input("请输入需要拷贝的文件夹名:") #2、创建文件夹,存放被拷贝的文件 newFilesName = oldFilesName+'_cp' #print('新文件夹的名字:%s'%newFilesName) os.mkdir(newFilesName) #2、获取元文件中的所有文件名字 fileNames = os.listdir(oldFilesName) # print(fileNames) #过滤文件 #fileName = solute(fileNames) # print(fileNames) #4、使用多进程的方式copy原文件夹中的数据到新文件夹中 pool = Pool(5) queue = Manager().Queue() for fileName in fileNames: pool.apply_async(copyFile,args=(fileName,oldFilesName,newFilesName,queue)) # pool.close() # pool.join() count = 0 allCounts = len(fileNames) # print(allCounts) while True:#用主进程来显示拷贝进度 name_t=queue.get() # print(name_t) count += 1 # print('count:%s'%count) # print('-----------------------------------') print('\r拷贝进度:%.2f%%'%((count/allCounts)*100),end='') if count==allCounts: print('\n--------over---------') break if __name__=='__main__': main()

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值