完成copy一个文件的功能
操作环境Linux/Unix Python3.6
代码如下:
使用进程池进行多线程copy文件基本功能
from multiprocessing import Pool, Manager
import os
def copyFileTask(name, oldFolderName, newFolderName, queue):
'''完成copy一个文件的功能'''
fr = open(oldFolderName + '/' + name)
fw = open(newFolderName + '/' + name, 'w')
content = fr.read()
fw.write(content)
fr.close()
fw.close()
queue.put(name)
def main():
# 获取用户要copy的文件夹的名字
oldFolderName = input('请输入文件夹的名字:')
# 创建一个文件夹
newFolderName = oldFolderName + ' - 复件'
# print(newFolderName)
os.mkdir(newFolderName)
# 获取old文件夹中的所有的文件名字
fileName = os.listdir(oldFolderName)
# print(fileName)
# 使用多进程的方式copy原文件夹中的所有文件到新的文件夹中
pool = Pool(5)
queue = Manager().Queue()
for name in fileName:
pool.apply_async(copyFileTask, args=(
name, oldFolderName, newFolderName, queue))
num = 0
allNum = len(fileName)
while True:
queue.get()
num += 1
copyRate = num / allNum
print("\rcopy的进度是:%.2f%%" % (copyRate * 100), end='')
if num == allNum:
break
print('\n 已完成 copy')
if __name__ == '__main__':
main()