gpt4 book ai didi

python - Shutil.rmtree(...) 在我的脚本中不起作用

转载 作者:行者123 更新时间:2023-11-30 21:50:34 28 4
gpt4 key购买 nike

我尝试在析构函数中删除创建的目录:

shutil.rmtree("C:\\projects\\project_alpha\\tmp")

它不适用于我的 python 脚本,但是当我通过 python 控制台执行此命令时,它可以工作并且 tmp 目录将被删除。

区别在哪里?

最佳答案

我假设“析构函数”是指 __del__ 方法。

来自the docs on del

It is not guaranteed that del() methods are called for objects that still exist when the interpreter exits.

您可能想要做的是注册 atexit处理程序。

例如在模块级别:

import atexit

def cleanup_directories():
directories = ["C:\\projects\\project_alpha\\tmp",]
for path in directories:
if os.path.exists(path) and os.path.isdir(path):
shutil.rmtree(path)

atexit.register(cleanup_directories)

用atexit注册的函数将在解释器退出时运行,无论解释器如何退出。

当然,您也可以做一些黑客行为,例如强制垃圾收集器运行(import gc; gc.collect()),这可能会强制您的 del 方法跑,但我要冒险说这是一个坏主意。

;-)

关于python - Shutil.rmtree(...) 在我的脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8009808/

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