我查找了一些信息,rpm模块只能用于搜索已安装的rpm包信息。我想使用python rpm模块搜索文件夹中的*.rpm文件并了解其信息,例如版本或版本。是这可以使用 rpm 模块吗?
最佳答案
如果有人在寻找答案时仍然来到这里,请使用以下方法使用 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)
(注意对 os.close() 的调用)
现在hdr
保存RPM头信息。您可以使用 RPMTAG_* 值作为键来访问字典样式的各个属性,例如:
arch = hdr[rpm.RPMTAG_ARCH]
您可以尝试使用 dir()
对所有可能的 RPMTAG_* 值进行逆向工程:
import rpm
print '\n'.join(filter(lambda x: x.startswith('RPMTAG'), dir(rpm)))
您还可以在 hdr
上调用 keys()
,但它会以整数形式返回可能的键,这可能不太友好。
我发现,当要处理大量 RPM 文件时,使用 python-rpm 而不是将命令行工具作为子进程调用,可以显着提高性能。
关于python - 关于Python中的rpm模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461975/