如何用Python从Windows注册表获取文件属性中的类型描述信息
Python 获取Windows文件类型显示文本实现
要实现传入文件扩展名返回对应系统显示的文件类型(比如.rar返回WinRAR 压缩文件、.exe返回应用程序,即文件属性窗口中“文件类型”栏的文本),可以通过读取Windows注册表实现,具体方案如下:
实现逻辑
文件类型描述存储在HKEY_CLASSES_ROOT注册表路径下,查询流程为:
- 根据输入的扩展名查询
HKEY_CLASSES_ROOT\.{扩展名}的默认值,拿到对应的文件类名 - 再查询
HKEY_CLASSES_ROOT\{类名}的默认值,即为目标文件类型描述
完整实现代码
import winreg def get_file_type_desc(ext: str) -> str: # 统一补充扩展名的点前缀 ext = ext.lower().strip() if not ext.startswith('.'): ext = f'.{ext}' try: # 第一步:获取扩展名对应的类标识 class_key = winreg.QueryValue(winreg.HKEY_CLASSES_ROOT, ext) if not class_key: return f"{ext[1:].upper()} 文件" # 第二步:获取类标识对应的类型描述 type_desc = winreg.QueryValue(winreg.HKEY_CLASSES_ROOT, class_key) return type_desc if type_desc else f"{ext[1:].upper()} 文件" except FileNotFoundError: # 未注册的扩展名返回兜底结果 return f"{ext[1:].upper()} 文件" # 测试用例 if __name__ == '__main__': print(get_file_type_desc('rar')) # 示例输出:WinRAR 压缩文件 print(get_file_type_desc('.exe')) # 示例输出:应用程序 print(get_file_type_desc('txt')) # 示例输出:文本文档
相关说明
- 该实现仅适用于Windows系统,依赖Python标准库
winreg,无需安装第三方依赖 - 返回结果和系统语言完全匹配,中文系统返回中文描述、英文系统返回英文描述
- 你之前找到的读取默认打开程序的代码,和本实现的前半段逻辑一致,只是第二步访问的注册表路径不同:获取默认打开程序需要访问
{类名}\shell\open\command子项,而获取文件类型描述直接读取类名的默认值即可。
内容的提问来源于stack exchange,提问作者Kikkiu
相关产品推荐
相关产品推荐

