You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python删除文件函数捕获FileNotFoundError后无法跳出while循环

无法跳出while循环的根本原因
  • 异常分支中result赋值为False后,全程没有修改该变量的逻辑,while result == False的判断条件永久成立,自然无法跳出循环
  • 调用input()获取到的用户输入的新文件名没有赋值给任何变量,输入内容直接被丢弃,就算循环能终止,后续执行os.remove(file_to_delete)还是会删除最初传入的不存在的文件,仍然会报错
  • 循环内的if result == True: break判断完全无效,该分支下没有任何能把result改为True的逻辑,这个判断永远不会触发
修正后的代码
import os
def delete_file(file_to_delete):
    try:
        # 优先尝试删除初始传入的目标文件
        os.remove(file_to_delete)
        print('file removed: ', file_to_delete)
        return True
    except FileNotFoundError:
        print("Error. File not found.")
        # 循环获取新文件名直到删除成功
        while True:
            new_file_path = input("Please enter a valid filename: ")
            try:
                os.remove(new_file_path)
                print('file removed: ', new_file_path)
                return True
            except FileNotFoundError:
                print("Error. File not found, please try again.")
修正说明
  • 保留了原代码先尝试删除初始传入文件名的执行逻辑,兼容原有调用习惯
  • 进入异常循环后,每次拿到用户输入的新路径都会直接尝试删除,删除成功就直接返回True终止函数,不会出现死循环问题
  • 去掉了原代码中循环结束后重复执行删除操作的冗余逻辑,避免二次报错

内容的提问来源于stack exchange,提问作者JakTheHero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:15:03