gpt4 book ai didi

python - 我如何错误地使用 copytree 以及如何修复它以免陷入巨大的循环?

转载 作者:行者123 更新时间:2023-12-01 05:11:44 26 4
gpt4 key购买 nike

我正在尝试创建一个函数来复制所有目录和文件并将它们放入一个文件夹中。这个目录没有备份文件夹,所以我第一次使用复制树创建一个,每次重新运行这个程序时,它应该再次备份(包括以前的备份)。我遇到了 copytree 陷入巨大递归循环的问题,并且不知道我做错了什么。这是我的代码。它第一次工作,但当我第二次运行它时,它就搞砸了。 argv[1] 是您要备份的本地文件夹。这将运行为:

% python3 文件名 文件夹名

from os import path, walk, remove, mkdir, listdir
from sys import argv
from shutil import copytree


if path.exists(argv[1]+'/Versions'):
copytree(argv[1], argv[1]+ '/Versions/' + str((len(listdir(argv[1]+'/Versions')))+1))

else:

copytree(argv[1], argv[1]+'/Versions/1')

如果 Versions 文件夹已存在,它会计算子文件夹的数量并创建一个新文件夹,其标签 +1 存在的文件夹数量

最佳答案

在我看来,您正在备份的文件夹的子文件夹中创建备份。

因此,下次运行脚本时,您将进行备份的备份,然后备份备份的备份,依此类推

将备份放入原始数据的子文件夹之外的位置,您的脚本应该可以正常工作。

source_path = os.path.join(argv[1], '/Versions')
destination_path = os.path.join(argv[1], '..', '/Backup')

#Now handle copying between these two locations
...

使用忽略方法

或者,您可以将可调用函数传递给 copytree 以忽略某些目录。

from shutil import copytree, ignore_patterns

copytree(source_path, destination_path, ignore=ignore_patterns('Versions'))

关于python - 我如何错误地使用 copytree 以及如何修复它以免陷入巨大的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24092059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com