如何遍历目录列表以检查尝试删除后它们是否仍然存在?

问题描述

我正在运行脚本来卸载程序并完成该过程,我正在检查是否按预期方式删除了适用的目录。我有以下内容

D_PATHS = (
    r'C:\ProgramFiles\D1\FolderA',r'C:\ProgramFiles\D1\FolderB',r'C:\ProgramFiles\D1\FolderC',)

for path in D_PATHS:
    self.info('Deleting %s',path)
    if os.path.exists:
        warnings.warn(f'The following directory still exists: {path}')
    else:
        print(f'Removed all required directories')

运行脚本时,它始终会发出警告,指出目录仍然存在,即使它们不存在。我究竟做错了什么?请原谅我非常有限的编码知识。我知道可能有一个我不理解的简单答案。

解决方法

os.path.exists是一个函数,您需要为其提供一个参数:

...
if os.path.exists(path):
    print("Still exists")
...
,

如果要为存在的每个目录打印警告,则应设置一个布尔标志,以在最后决定是否打印“已删除所有必需的目录”消息。

    dirs_exist = False
    for path in D_PATHS:
        self.info('Deleting %s',path)
        if os.path.exists(path):
            warnings.warn(f'The following directory still exists: {path}')
            dirs_exist = True
    if not dirs_exist:
        print(f'Removed all required directories')

如果您只想警告仍然存在的 first 目录,则可以从break循环进入for,在这种情况下,您可以使用else循环中的for子句,用于在未遇到break的情况下打印消息:

    for path in D_PATHS:
        self.info('Deleting %s',path)
        if os.path.exists(path):
            warnings.warn(f'The following directory still exists: {path}')
            break
    else:
        print(f'Removed all required directories')

请注意,尽管有消息说“正在删除”,但是您在此处显示的代码实际上并未删除任何内容。大概您已经在代码中更早了。

,

您可能没有权限,因此无法删除它们。

1。使用pyinstaller生成python.exe。

2。右键单击并单击“以管理员身份运行”选项