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

如何使用Python实现文件及文件夹的隐藏功能?

Python实现跨平台文件/文件夹隐藏功能

核心逻辑

不同操作系统的文件隐藏规则不一致,需要分别适配:

  • Windows系统:通过修改文件/文件夹的隐藏属性实现
  • Linux/macOS系统:通过给文件/文件夹名称前添加.前缀实现

完整代码实现

import os
import sys
import ctypes
from pathlib import Path

def hide(target_path: str, is_hidden: bool = True) -> None:
    """
    隐藏或取消隐藏指定的文件/文件夹
    :param target_path: 要操作的文件/文件夹路径
    :param is_hidden: True为隐藏,False为取消隐藏
    """
    path = Path(target_path).absolute()
    if not path.exists():
        raise FileNotFoundError(f"路径不存在:{target_path}")
    
    # Windows系统处理逻辑
    if sys.platform.startswith("win"):
        FILE_ATTRIBUTE_HIDDEN = 0x2
        # 获取当前属性
        attrs = ctypes.windll.kernel32.GetFileAttributesW(str(path))
        if attrs == -1:
            raise OSError(f"无法读取路径属性:{target_path}")
        # 修改属性
        if is_hidden:
            new_attrs = attrs | FILE_ATTRIBUTE_HIDDEN
        else:
            new_attrs = attrs & ~FILE_ATTRIBUTE_HIDDEN
        res = ctypes.windll.kernel32.SetFileAttributesW(str(path), new_attrs)
        if res == 0:
            raise OSError(f"修改属性失败:{target_path}")
    # Unix类系统(Linux/macOS)处理逻辑
    else:
        parent_dir = path.parent
        current_name = path.name
        if is_hidden:
            if not current_name.startswith("."):
                new_name = f".{current_name}"
                new_path = parent_dir / new_name
                if new_path.exists():
                    raise FileExistsError(f"目标路径已存在:{new_path}")
                path.rename(new_path)
        else:
            if current_name.startswith("."):
                new_name = current_name.lstrip(".")
                # 避免名称全是点的情况出现空名称
                if not new_name:
                    return
                new_path = parent_dir / new_name
                if new_path.exists():
                    raise FileExistsError(f"目标路径已存在:{new_path}")
                path.rename(new_path)

使用示例

# 隐藏文件
hide("VerySecretFile.txt")
# 隐藏文件夹
hide("SecretFolder")
# 取消隐藏文件
hide("VerySecretFile.txt", is_hidden=False)

注意事项

  • 操作需要对应路径的读写权限,权限不足会抛出异常
  • 该方案实现的是系统默认的常规隐藏,用户开启显示隐藏文件/文件夹后仍然可以看到内容
  • Unix系统下修改名称会改变文件的原始路径,依赖原路径的其他业务逻辑需要同步调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:45:06