如何用python猜测文件扩展名?

问题描述

我最近尝试制作一个python代码,该代码采用文件的路径不带扩展名,并确定文件的扩展名。

我在寻找类似以下示例的内容。在示例中,扩展名为exe(但是代码尚不知道)。

path = 'C:\\MyPath\\Example'
#takes the path above and guesses the programs extension:
extension = guess_extension(path)
#adds the extension to the path:
fullPath = path+extension
print(fullPath)

输出

C:\MyPath\Example.exe

如果您知道可以执行此操作(或类似操作)的python模块,请在下面列出。


我尝试使用文件类型(filetype.guess())和模仿类型(mimetypes.guess_extension())模块,但它们都将返回无值。
我也曾尝试使用this one之类的许多问题的答案,但这仍然行不通。

解决方法

听起来好像内置glob模块(glob docs)可能正是您想要的。该模块在Python中提供Unix样式模式扩展功能。

在下面的示例中,不完整的path变量在传递给str时附加了.* glob.glob。这实际上告诉glob.glob返回在主机系统中找到的与list相同的有效路径中的path,后跟一个句点(指定文件扩展名),并带有星号匹配path + '.'之后的所有字符。

import glob

path = r'C:\Program Files\Firefox Developer Edition\minidump-analyzer'

full = glob.glob(path+'.*')

print(full[0])

输出:C:\Program Files\Firefox Developer Edition\minidump-analyzer.exe

值得注意的是,以上仅是如何利用glob作为问题解决方案的一部分的说明。应该根据程序的需要正确处理意外的输入,极端情况,异常等。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...