python 利用多进程实现文件的拷贝
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 利用多进程实现文件的拷贝,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2195字,纯文字阅读大概需要4分钟。
内容图文
![python 利用多进程实现文件的拷贝](/upload/InfoBanner/zyjiaocheng/974/663c35ebd7da40bca1d6919e02b8d7ed.jpg)
python 利用多进程实现文件的拷贝
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37338590/article/details/78472103
整个程序的流程可分为四步:
第一步是提示用户输入要拷贝的文件夹;
第二步是创建新文件夹;
第三步是获取文件夹中所有文件的名字;
最后一步是就是利用进程池创建进程完成复制。
具体的分析在程序中都有了,不再做过多的赘述。(注释掉的代码是用于编写过程中的测试语句)
-
#根据进程池和进程间通信实现文件拷贝
-
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()
内容总结
以上是互联网集市为您收集整理的python 利用多进程实现文件的拷贝全部内容,希望文章能够帮你解决python 利用多进程实现文件的拷贝所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。