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

如何使用Python的os模块检测文件夹是否被打开

检测文件夹是否被打开的正确方法

你的代码没法正常运行,核心问题有两个:

  • open()函数是用来打开文件的,不能直接打开文件夹,调用它访问文件夹会直接抛出权限错误
  • 逻辑搞反了:你现在的逻辑是“能打开文件夹就提示被打开”,但实际应该是“当文件夹被其他进程占用(比如资源管理器打开着)时,无法以独占方式访问它”

下面是Windows系统下可行的实现方案:

首先需要安装pywin32库,打开命令行执行:

pip install pywin32

然后用以下代码检测:

import win32file
import win32con
import time

FOLDER_PATH = r"C:\Users\Me\OneDrive\Bureau\Myfolder"

def is_folder_open(folder_path):
    try:
        # 尝试以独占模式打开文件夹
        handle = win32file.CreateFile(
            folder_path,
            win32con.GENERIC_READ,
            0,  # 0表示不允许其他进程访问(独占模式)
            None,
            win32con.OPEN_EXISTING,
            win32con.FILE_ATTRIBUTE_NORMAL,
            None
        )
        win32file.CloseHandle(handle)
        return False
    except win32file.error as e:
        # 错误码32表示文件/文件夹被其他进程占用
        if e.winerror == 32:
            return True
        # 其他错误(比如路径不存在)
        raise

while True:
    if is_folder_open(FOLDER_PATH):
        print("文件夹被打开了!")
    time.sleep(1)  # 每秒检测一次,避免占用过多资源

代码说明

  • win32file.CreateFile:Windows API的封装,用来打开文件/文件夹,这里设置0作为共享模式,意味着只有当前进程能访问该文件夹
  • 如果返回错误码32,说明文件夹已经被其他进程(比如资源管理器、Office等)占用,即处于打开状态
  • 加入time.sleep(1)是为了减少循环的资源消耗,你可以根据需求调整检测间隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:59:54