[英]Identifying the type of a file without extension from binary data
我有一些没有扩展名的文件。 我想将扩展名与他们联系起来。 为此,我编写了一个python程序来读取文件中的数据。 我怀疑的是,如果不使用第三方工具,我如何在没有扩展名的情况下识别其类型。
我只需要识别pdf,doc和文本文件。 其他类型的文件是不可能的。
我的服务器是中心
您可以读取文件的前几个字节并查找“幻数”。 关于幻数的Wikipedia页面表明PDF文件以ASCII %PDF
开头,doc文件以hex D0 CF 11 E0开头。
在一般情况下识别文本文件将非常困难,因为许多标准幻数实际上是二进制文件开头的ASCII文本。 对于您的情况,如果您可以保证您不会获得除PDF,DOC或TXT之外的任何内容,您可能可以获得的是检查PDF和DOC幻数,然后假设它是文本,如果它不是那些。
你还没说过你的操作系统。 如果它是基于* nix的,那么在libmagic周围有一个python包装器(使用ctypes),它使用与file
命令相同的底层机制,它可以通过检查内容来识别没有扩展名的文件。 或者只是检查libmagic如何使用文件定义,并弄清楚它如何识别两种主要文件类型(doc,pdf),剩下的一切必须是文本;-)并扩展现有代码。
PDF文档以%PDF版本号开头,但其中一些可以完全压缩。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.