使用 python 验证文件扩展名 [重复]

Posted

技术标签:

【中文标题】使用 python 验证文件扩展名 [重复]【英文标题】:File extension validation with python [duplicate] 【发布时间】:2013-09-03 16:28:06 【问题描述】:

我想检查给定文件的扩展名是否正确。例如,有人给我一个扩展名为 .zip 的文件,但实际上它可能是一个可执行文件。

使用mimetypes 我无法确定文件的真实类型。据我所知,mimetypes 需要扩展。

我可以用一些扩展来映射 unix file 命令的输出。即使更改扩展名,也无法欺骗file 命令。但是,此解决方案需要一个子流程。

我想,这个问题可能有一个更 Pythonic 的解决方案。有人知道吗?

【问题讨论】:

@JesseJ 这对我来说没问题。它可以作为文本文件处理。我想分开存档、可执行文件、库等。 【参考方案1】:

搜索用于file 命令的C 库名称(libmagic),网络3 interesting python packages on PyPI:

libmagic (bitbucket repo) python-magic(你可以找到一些documentation in the github repo) filemagic (github repo)

【讨论】:

【参考方案2】:

归根结底,没有绝对的了解方式。有几个原因:

一些文件格式使用简单的标识符,而另一些则不使用。 对于那些不这样做的人,唯一的方法是分析能够支持该格式的程序的行为。如果程序可以成功打开文件,那么它就属于它。 但如果不是,该文件可能属于数百种您没有程序可以打开的格式。

恐怕您需要满足于部分答案,就像您已有的答案一样。

【讨论】:

以上是关于使用 python 验证文件扩展名 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript/jquery 验证文件上传 [重复]

同一段代码,扩展名为cpp就可以成功编译,扩展为c就不能编译,求解答

为啥内部类的扩展会得到重复的外部类引用?

在没有扩展名的目录中获取文件名 - Python [重复]

python程序文件test.py编译后的文件名

使用Python解析XML来打印值[重复]