import multiprocessing
import os
""""导入模块"""
def copy_file(src_path, des_path, file, queue):
# 读取源目录中的文件
src_file = open(os.path.join(src_path, file), "rb")
# 打开创建目录下的文件
des_file = open(os.path.join(des_path, file), "wb")
# 循环读取文件中的内容写入新文件中
while True:
file_content = src_file.read(4096)
if file_content:
des_file.write(file_content)
else:
break
# 关闭文件
src_file.close()
des_file.close()
queue.put(file)
def main():
# 获取要备份的源目录
src_path = input("请输入要备份的源目录")
# 创建目录用来存放拷贝的文件数据
des_path = src_path + "[backup]"
os.mkdir(des_path)
# 获取源目录中的文件信息,返回的是一个列表
file_list = os.listdir(src_path)
# 创建队列用于和子进程传递信息, 括号中指定最大接受数量上限
queue = multiprocessing.Queue(128)
# 创建子进程用于拷贝文件内容
for file in file_list:
pro = multiprocessing.Process(target=copy_file, args=(src_path, des_path, file, queue))
pro.start()
# count用于计数文件的传输进度
count = 0
while True:
file = queue.get()
count += 1
print("\r当前进度%% %.2f" % (count/len(file_list)*100), end="")
if count == len(file_list):
break
if __name__ == '__main__':
main()
简单实现多进程文件下载器
最新推荐文章于 2025-09-20 01:58:56 发布
478

被折叠的 条评论
为什么被折叠?



