使用Python 2.6子模塊,我需要對我與建設的src.rpm文件運行命令先前的子流程調用。
不幸的是,我正在處理不一致的spec文件,所以我只是對src.rpm的文件名應該是什麼樣子有一個模糊的概念(例如,我知道包的名稱和擴展名在名爲「{package} - {version} .src.rpm」的東西中,但不是版本)。
但是我知道,我只會在我要找目錄中一個文件的src.rpm,這樣我就可以像
mock {options} *.src.rpm
調用模擬一個命令和它的工作在shell中,但子進程似乎不想接受擴展。我試過使用(shell = True)作爲subprocess.call()的參數,但即使它工作,我寧願避免它。
如何獲得類似
subprocess.call("mock *.src.rpm".split())
運行?
我認爲你正在運行到這個問題是因爲通配符文件名被處理OS創建命令之前,所以你必須自己查找文件名,並將它們全部通過命令行傳遞。 –
您可能還想嘗試調用subprocess.Popen,但我不確定它是否能解決您的問題,但本教程顯示了一個示例:http://www.dreamsyssoft.com/python-scripting- tutorial/shell-tutorial.php –
你可以通過'glob.glob('*。src.rpm')'得到文件名列表,它將返回一個列表。那麼你只需要在那裏預先設置一個「模擬」...... – mgilson