# -*- coding: utf-8 -*-
# @Time : 2021/7/13 14:50
# @Author : 飞鸟凌
# @File : 08_多进程实现文件夹的复制.py
import os
import multiprocessing
PATH = "C:/Users/feiniaoling/Desktop/" # 此处可以修改默认寻找路径
def copy(q, folder_name, new_folder_name, file_name):
try:
old_fp = open(PATH + folder_name + "/" + file_name, "rb")
except:
print("文件读取出错")
new_fp = open(PATH + new_folder_name + "/" + file_name, "wb")
while True:
comment = old_fp.read(1024)
if not comment:
break
new_fp.write(comment)
old_fp.close()
new_fp.close()
q.put(file_name)
def main():
# 获取要复制的文件夹名称和创建新的文件文件夹
folder_name = input("Please input the name of copying the folder:")
new_folder_name = folder_name + "[复件]"
try:
os.mkdir(PATH + new_folder_name)
except Exception as e:
pass
# 获取文件夹中所有的文件名称
file_names = os.listdir(PATH + folder_name)
# 创建进程池
pool = multiprocessing.Pool(3) # 默认设置一次三个进程运行
# 创建队列
q = multiprocessing.Manager().Queue()
# 进行复制
for file_name in file_names:
pool.apply_async(copy, args=(q, folder_name, new_folder_name, file_name))
pool.close()
file_sum = len(file_names)
file_count = 0
while True:
data = q.get()
file_count += 1
print("\r复制进度为%.2f%%" % (file_count * 100 / file_sum), end="", flush=True)
if file_count == file_sum:
break
if __name__ == '__main__':
main()
多进程实现文件夹的拷贝
最新推荐文章于 2021-11-18 13:19:09 发布