为什么 python 在执行完成后丢弃错误

why python is dropping errors after execution is being completed

我写了一个穿透文件夹的程序,检查文件夹是否有包含文件的子文件夹,如果有包含文件的文件夹,程序再次穿透并删除所有创建的文件,以便创建文件夹空并准备删除它但是在执行程序后当目录中有许多文件夹和文件时我收到以下错误

PermissionError: [WinError 5] Access is denied: 'FileLocation\Folder'

如果该目录中的目录名有两个或更多单词,它们之间有 space 分隔符,程序运行良好但会出现以下错误

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'FileLocation\firstName secondName'

我用唯一的os模块写的代码是后面的代码

import os

# parent folder
New = "C:\Users\HP\Desktop\New"

# check if the path exists
if os.path.exists(New):
# looping over all files and directories inside the parent folder
for files in os.listdir(New):
    # check if there is directories
    if os.path.isdir(New + '\' + files):
        # check if the directories are empty and get ready to remove it
        if len(os.listdir(New + '\' + files)) <= 0:
            os.rmdir(New + '\' + files)
        # when directories are not empty
        else:
            # search for file inside the nested directories
            for sub_files in os.listdir(New + '\' + files):
                # remove all the files inside the nested directories
                os.remove(New + '\' + files + "\" + sub_files)
        # remove directories after removing files inside it
        os.removedirs(New + '\' + files)
    # check if there is files
    if os.path.isfile(New + '\' + files):
        # removing the files inside the parent folder
        os.remove(New + '\' + files)
# removing the entire folder after deleting all files and folders inside it
os.rmdir(New)
else:
    print('Folder doesn\'t exist')

当我像下面的第二个代码一样编写程序时,没有任何逻辑或运行时错误,它的代码如下 shutil 和 os 模块

import shutil
import os

# parent folder
New = "C:\Users\HP\Desktop\New"
if os.path.exists(New):
     shutil.rmtree(New)
else:
    print('Folder doesn\'t exist')

所以我想知道是否有关于 python 错误的任何进一步配置或我的代码中的任何错误要修复或以任何方式在运行时不丢失任何错误这将更好(删除目录)这不是空的)谢谢

无论您使用什么 运行 脚本和 select 运行 作为系统管理员

,在 Pychram 或 CMD 上单击右键

我相信是这部分:

    if len(os.listdir(New + '\' + files)) <= 0:
        os.rmdir(New + '\' + files)
    # when directories are not empty
    else:
        # search for file inside the nested directories
        for sub_files in os.listdir(New + '\' + files):
            # remove all the files inside the nested directories
            os.remove(New + '\' + files + "\" + sub_files)

你有 if len(os.listdir(New + '\' + files)) <= 0: 这意味着文件夹是否为空。
您还有 else:,用于非空文件夹。
但是,如果在那个文件夹中,还有另一个文件夹也不是空的,
你不能在上面调用 os.remove(New + '\' + files + "\" + sub_files)
所以它会抛出一个 PermissionError: [WinError 5] Access is denied错误。