我查了一些資料,rpm模塊只能用於搜索安裝的rpm包的信息。我想用python rpm模塊搜索文件夾中的* .rpm文件並且知道他們的信息,比如版本或版本。是否可以使用rpm模塊?關於python中的rpm模塊
1
A
回答
0
沒有辦法做到這一點,我知道。你最簡單的辦法就是直接打電話到rpm命令和分析數據
subprocess.check_output(["rpm", "-qip", "CentOS_Image/Packages/python-2.6.6-29.el6_2.2.x86_64.rpm" ])
'Name : python\nVersion : 2.6.6\nRelease : 29.el6_2.2\nArchitecture: x86_64\nInstall Date: (not installed)\nGroup : Development/Languages\nSize : 21290059\nLicense : Python\nSignature : RSA/SHA1, Mon 18 Jun 2012 14:47:20 BST, Key ID 0946fca2c105b9de\nSource RPM : python-2.6.6-29.el6_2.2.src.rpm\nBuild Date : Mon 18 Jun 2012 14:21:55 BST\nBuild Host : c6b5.bsys.dev.centos.org\nRelocations : (not relocatable)\nPackager : CentOS BuildSystem <http://bugs.centos.org>\nVendor : CentOS\nURL : http://www.python.org/\nSummary : An interpreted, interactive, object-oriented programming language\nDescription :\nPython is an interpreted, interactive, object-oriented programming\nlanguage often compared to Tcl, Perl, Scheme or Java. Python includes\nmodules, classes, exceptions, very high level dynamic data types and\ndynamic typing. Python supports interfaces to many system calls and\nlibraries, as well as to various windowing systems (X11, Motif, Tk,\nMac and MFC).\n\nProgrammers can write new built-in modules for Python in C or C++.\nPython can be used as an extension language for applications that need\na programmable interface. This package contains most of the standard\nPython modules, as well as modules for interfacing to the Tix widget\nset for Tk and RPM.\n\nNote that documentation for Python is provided in the python-docs\npackage.\n'
+1
你會想看看'查詢格式',以便於解析。 –
1
如果有人還在這裏結束了,當搜尋答案,這裏是你如何使用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]
你可以嘗試反向工程的所有可能RPMTAG_ *值使用dir()
:
import rpm
print '\n'.join(filter(lambda x: x.startswith('RPMTAG'), dir(rpm)))
您也可以撥打keys()
在hdr
,但它會返回可能的鍵作爲整數,這可能不那麼友好。
我發現使用python-rpm而不是調用命令行工具作爲子進程時,會在大量RPM文件被處理時顯着提升性能。
欲瞭解更多信息,請參閱http://rpm5.org/docs/api/classRpmhdr.html
相關問題
- 1. 關於python模塊symtable
- 2. 關於python中boto模塊的bucket.list()
- 3. 關於Python中timeit模塊的問題
- 4. 使用python rpm模塊進行Globbing?
- 5. 爲(非系統)Python安裝rpm模塊
- 6. Python rpm模塊不能使用rpm調用回調函數。RPMCALLBACK_INST_OPEN_FILE
- 7. 關於python的模塊導入系統
- 8. 關於RPM升級
- 9. 關於JavaScript中的模塊模式
- 10. Fedora中關於RPM的問題
- 11. 相關的Python模塊
- 12. 任何人都知道關於Python中的Akando模塊和舞者模塊?
- 13. 查找使用我的rpm的模塊
- 14. 關於Linux模塊printk的
- 15. 如何創建假裝提供Python模塊的假RPM?
- 16. 用於html的python模塊
- 17. 用於python的SSH模塊
- 18. 用於Python的MySQL模塊
- 19. ImportError:沒有名爲rpm的模塊
- 20. 關於在Python中導入模塊的困惑
- 21. 關於nginx上游模塊中的ip_hash
- 22. 在python中用於pcap流的模塊
- 23. Python模塊依賴關係
- 24. Python模塊依賴關係
- 25. python導入相關模塊
- 26. 錯誤導入模塊_md5,以及相關RPM
- 27. 使用RPM分發python軟件包以及模塊依賴項
- 28. 關於linux內核模塊
- 29. 使用python yum/rpm API查找rpm相關性?
- 30. 安裝rpm後加載模塊
我敢肯定,'yum'是所有用Python編寫的,所以你可能要檢查了這一點。我認爲默認情況下會安裝Python RPM庫(現在在Windows上,對不起)。 –