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

如何在Python中获取文件扩展名对应的文件类型名称

从文件扩展名获取Windows文件类型名称的Python实现

要实现和Windows资源管理器一致的文件类型名称获取,直接调用Windows系统API即可,下面提供两种可行方案:

方案一:使用pywin32库

需要先安装依赖库:

pip install pywin32

实现代码:

import win32api
import win32con

def get_file_type_name(extension):
    # 统一扩展名格式,确保以.开头
    if not extension.startswith('.'):
        extension = '.' + extension
    try:
        # 调用SHGetFileInfo获取文件类型名称
        _, _, _, _, type_name = win32api.SHGetFileInfo(
            extension,
            win32con.FILE_ATTRIBUTE_NORMAL,
            win32con.SHGFI_TYPENAME
        )
        return type_name
    except Exception:
        return f"未知文件类型 ({extension})"

方案二:使用ctypes(无需额外安装库)

直接调用Windows系统的shell32.dll,不需要安装第三方库:

import ctypes
from ctypes import wintypes

def get_file_type_name(extension):
    # 统一扩展名格式
    if not extension.startswith('.'):
        extension = '.' + extension

    # 定义所需的常量和结构体
    SHGFI_TYPENAME = 0x000000400
    FILE_ATTRIBUTE_NORMAL = 0x80

    class SHFILEINFO(ctypes.Structure):
        _fields_ = [
            ("hIcon", wintypes.HICON),
            ("iIcon", wintypes.INT),
            ("dwAttributes", wintypes.DWORD),
            ("szDisplayName", wintypes.CWCHAR * 260),
            ("szTypeName", wintypes.CWCHAR * 80)
        ]

    shfi = SHFILEINFO()
    # 调用SHGetFileInfoW获取类型名称
    ctypes.windll.shell32.SHGetFileInfoW(
        extension,
        FILE_ATTRIBUTE_NORMAL,
        ctypes.byref(shfi),
        ctypes.sizeof(shfi),
        SHGFI_TYPENAME
    )

    return shfi.szTypeName if shfi.szTypeName else f"未知文件类型 ({extension})"

使用示例

print(get_file_type_name('.txt'))  # 输出:文本文档
print(get_file_type_name('.docx')) # 输出:Microsoft Word 文档
print(get_file_type_name('.xyz'))  # 输出:未知文件类型 (.xyz)

注意事项

  • 两种方案均依赖Windows系统API,仅能在Windows环境下运行,符合你开发Windows 10资源管理器克隆的需求
  • 如果扩展名未在系统中注册关联类型,会返回自定义的“未知文件类型”提示
  • 传入的扩展名需确保格式正确,建议统一处理为以.开头的形式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:30:52