3

我有一些没有扩展名的文件。我想与他们关联扩展。为此,我编写了一个 python 程序来读取文件中的数据。我的疑问是如何在不使用第三方工具的情况下在没有扩展名的情况下识别其类型。

我只需要识别 pdf、doc 和文本文件。其他类型的文件是不可能的。

我的服务器是cent os

4

3 回答 3

11

您可以读取文件的前几个字节并查找“幻数”。关于幻数的维基百科页面建议 PDF 文件以 ASCII 开头,%PDF而 doc 文件以十六进制 D0 CF 11 E0 开头。

在一般情况下,识别文本文件非常困难,因为许多标准幻数实际上是二进制文件开头的 ASCII 文本。对于您的情况,如果您可以保证除了 PDF、DOC 或 TXT 之外什么都不会得到,那么您可能会逃避检查 PDF 和 DOC 幻数,然后假设它是文本,如果不是那些。

于 2012-08-30T05:01:39.390 回答
5

你还没有说你的操作系统是什么。如果它是基于 *nix 的,那么 libmagic 周围有一个 python 包装器(使用 ctypes),它使用与命令相同的底层机制file,可以通过检查内容来识别没有扩展名的文件。或者,只需检查 libmagic 如何使用文件定义并找出它如何识别两种主要文件类型(doc、pdf),剩下的所有内容都必须是文本;-) 并扩展您现有的代码。

于 2012-08-30T04:59:34.363 回答
0

PDF 文档以 %PDF-version number 开头,但其中一些可以完全压缩。

于 2012-08-30T05:03:25.027 回答