在Linux中用Python读取EXE,MSI和ZIP文件元数据

use*_*500 7 python windows-installer md5 metadata

我正在编写一个Python脚本,将大量Windows安装程序编入索引.

我想知道如何使用在Linux上运行的Python从EXE,MSI和ZIP文件中读取元数据信息(公司,产品名称,版本等).

软件

我在Ubuntu 10.04 64位与Django 1.2.1上使用Python 2.6.5.

发现到目前为止:

可以提取EXE元数据的Windows命令行实用程序(如来自SysUtils的filever)或仅在Windows中工作的其他单个CL utils.我已经尝试通过Wine运行它们但它们有问题并且不值得去找那些CL utils所依赖的库和框架并尝试在Wine/Crossover中安装它们.

用于Python的Win32模块可以执行某些操作但不能在Linux中运行(对吧?)

次要问题:

显然,更改文件的元数据会更改文件的MD5哈希值.是否有一种通用的方法来散列独立于元数据的文件,除了定位和读取它(例如:跳过前1024个字节?)


这是我在这里发布的StackOverflow的第一篇文章.从我作为一名新的Python开发人员的最新工作开始,我对Stackoverflow印象非常深刻,并且它一直出现在谷歌搜索我的Python/Django查询的顶部,并且具有高质量的答案.感谢这个社区.

Chr*_*nte 4

看一下这个库: http: //bitbucket.org/haypo/hachoir/wiki/Home以及使用该库的示例程序:http://pypi.python.org/pypi/hachoir-metadata/1.3.3。第二个链接是一个示例程序,它使用Hachoir二进制文件操作库(第一个链接)来解析元数据。

该库可以处理这些格式:

  • 档案:bzip2、gzip、zip、tar
  • 音频:MPEG 音频(“MP3”)、WAV、Sun/NeXT 音频、Ogg/Vorbis (OGG)、MIDI、AIFF、AIFC、Real 音频 (RA)
  • 图片:BMP、CUR、EMF、ICO、GIF、JPEG、PCX、PNG、TGA、TIFF、WMF、XCF
  • 其他:洪流
  • 程序:EXE
  • 视频:ASF 格式(WMV 视频)、AVI、Matroska (MKV)、Quicktime (MOV)、Ogg/Theora、Real media (RM)

此外,Hachoir可以执行一些文件操作操作,我认为这些操作包括一些原始的元数据操作。