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

如何用Python删除临时文件?执行脚本遇权限错误求助

问题:删除Windows临时文件时触发权限错误

我写了一个Python脚本用来删除下载文件夹和Windows临时目录的文件,下载文件能成功删除,但删除临时文件时出错。

脚本代码:

import os
import shutil

temp_dir = "C:\\Windows\\Temp"
downloads_dir = os.path.join(os.environ['USERPROFILE'], "Downloads")

quit = input("Do you want to delete all the downloads? (Press enter to continue)")

for file in os.listdir(downloads_dir):
    file_path = os.path.join(downloads_dir, file)
    if os.path.isdir(file_path):
        shutil.rmtree(file_path)
    else:
        os.remove(file_path)

print("All the downloaded files were deleted.")

quit = input("Do you want to delete all the temp files? (Press enter to continue)")

for file in os.listdir(temp_dir):
    file_path = os.path.join(temp_dir, file)
    if os.path.isdir(file_path):
        shutil.rmtree(file_path)
    else:
        os.remove(file_path)
        
print("All the temp files were deleted.")

报错信息:

os.remove(file_path)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\\\Windows\\\\Temp\\\\DESKTOP-0CR5QUA-20221230-0000.log'

解决方案

1. 捕获异常,跳过被占用的文件

Windows临时目录里经常有系统或其他进程正在使用的文件,直接删除会触发权限错误。给删除操作添加异常处理,就能跳过这些无法删除的文件,同时记录报错信息。

修改后的临时文件删除逻辑:

quit = input("Do you want to delete all the temp files? (Press enter to continue)")

for file in os.listdir(temp_dir):
    file_path = os.path.join(temp_dir, file)
    try:
        if os.path.isdir(file_path):
            shutil.rmtree(file_path)
            print(f"Deleted directory: {file_path}")
        else:
            os.remove(file_path)
            print(f"Deleted file: {file_path}")
    except PermissionError:
        print(f"无法删除,文件被占用: {file_path}")
    except Exception as e:
        print(f"删除出错: {file_path} - {str(e)}")
        
print("临时文件清理完成(跳过被占用的文件)。")

2. 以管理员身份运行脚本

C:\Windows\Temp目录下部分文件需要管理员权限才能删除,右键点击Python脚本,选择“以管理员身份运行”,可以解决部分权限不足的问题。

3. 额外优化建议

  • 清理前先检查文件/目录是否存在,避免因文件被其他进程提前删除而触发“文件不存在”的错误
  • 对于顽固的被占用文件,可以用Process Explorer这类工具找到占用进程,结束后再删除,但脚本层面无法直接实现该操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:45:42