多进程备份文件
本帖最后由 silentPasser 于 2021-9-24 11:57 编辑代码:
from multiprocessing import Manager, Pool
import os
def copyFile(oldFile, newFile, queue=None):
with open(oldFile, 'rb') as f:
content = f.read()
with open(newFile, 'wb') as f:
f.write(content)
if queue is not None:
queue.put(1)
def copyFolder(old, new):
os.mkdir(new)
files = os.listdir(old)
pool = Pool(8)
# 待拷贝文件数
n = files.__len__()
queue = Manager().Queue(n)
for file in files:
pool.apply_async(copyFile, (f'{old}\\{file}', f'{new}\\{file}', queue))
pool.close()
# 完成拷贝的文件个数
finish = 0
while finish < n:
finish += queue.get()
rate = int(finish / n * 100)
print('\r', '♦' * int(rate / 5), f'{rate}%', end='')
pool.join()
def main():
old = input("原文件路径:")
new = input('拷贝文件路径:')
if os.path.exists(old):
if os.path.isdir(old):
copyFolder(old, new)
return
copyFile(old, new)
return
print('原文件不存在!')
main()
if __name__ == '__main__':
main()
存在的bug:
要备份的文件夹中不能包含文件夹。 所谓备份就是用代码复制粘贴吗,多线程又不能解决磁盘IO资源不足的问题,不如做个透明加密上传到阿里云盘备份的功能,同时要求下载回来的时候能实现透明解密 细水流长 发表于 2021-9-23 18:43
把阿里云盘挂载到本地,然后复制粘贴进去不就行了
自动备份的话也比较简单
关键词:透明加密、透明解密 不能有文件夹 ? 代码上写貌似是多进程,标题为什么用多线程,多线程应该是用threading库的,可你用的是multiprocessing。。。。。 虔来学习 发表于 2021-9-24 07:40
代码上写貌似是多进程,标题为什么用多线程,多线程应该是用threading库的,可你用的是multiprocessing。。 ...
没注意,多线程说多了
页:
[1]