关于Python中的rpm模块

Mou*_*use 3 python rpm

我查找了一些信息,rpm模块只能用于搜索已安装的rpm包信息。我想使用python rpm模块搜索文件夹中的*.rpm文件并了解它们的信息,例如版本或版本。这可以使用rpm 模块?

小智 6

如果有人在寻找答案时仍然来到这里,可以使用以下方法使用 python-rpm 来做到这一点:

import os
import rpm

fdno = os.open(PATH_TO_RPM_FILE, os.O_RDONLY)
ts = rpm.ts()
hdr = ts.hdrFromFdno(fdno)
os.close(fdno)
Run Code Online (Sandbox Code Playgroud)

(注意对 os.close() 的调用)

现在hdr保存 RPM 标头信息。您可以使用 RPMTAG_* 值作为键来访问字典样式的各个属性,例如:

arch = hdr[rpm.RPMTAG_ARCH]
Run Code Online (Sandbox Code Playgroud)

您可以尝试使用以下命令对所有可能的 RPMTAG_* 值进行逆向工程dir()

import rpm
print '\n'.join(filter(lambda x: x.startswith('RPMTAG'), dir(rpm)))
Run Code Online (Sandbox Code Playgroud)

您也可以调用keys()on hdr,但它会以整数形式返回可能的键,这可能不太友好。

我发现,当要处理大量 RPM 文件时,使用 python-rpm 而不是将命令行工具作为子进程调用,可以显着提高性能。

有关更多信息,请参阅http://rpm5.org/docs/api/classRpmhdr.html