我有類似下面的列表:如何代表bash命令的元素,新的列表特色的一個列表的元素結合等號
commandOptionsAndArguments = ['myBigTool', '--num-callers', '30', '--leak-check', 'full', '--tool', 'memcheck', '--suppressions', 'etc/valgrind-root.supp', '--suppressions', 'Gaudi.supp/Gaudi.supp', '--suppressions', 'oracleDB.supp', '--suppressions', 'valgrindRTT.supp', '--suppressions', 'root.supp/root.supp', '--mySpecialFlag', '$(which python)', '$(which athena.py)', 'athenaConf.pkl']
該列表由bash命令的元素具有選項,如果他們有他們各自的論點。我想將其轉換爲以下列表:
commandOptions = ['myBigTool', '--num-callers=30', '--leak-check=full', '--tool=memcheck', '--suppressions=etc/valgrind-root.supp', '--suppressions=Gaudi.supp/Gaudi.supp', '--suppressions=oracleDB.supp', '--suppressions=valgrindRTT.supp', '--suppressions=root.supp/root.supp', '--mySpecialFlag', '$(which python)', '$(which athena.py)', 'athenaConf.pkl']
這個新的列表包含的選項,如果他們有他們,用等號進入新的元素結合各自的論點。下一步將是要麼使用子進程來執行該命令或將其轉換爲使用的字符串os.system
:
" ".join(commandOptions)
# 'myBigTool --num-callers=30 --leak-check=full --tool=memcheck --suppressions=etc/valgrind-root.supp --suppressions=Gaudi.supp/Gaudi.supp --suppressions=oracleDB.supp --suppressions=valgrindRTT.supp --suppressions=root.supp/root.supp --mySpecialFlag $(which python) $(which athena.py) athenaConf.pkl'
我的問題是:我如何在一個穩健的方式列表commandOptionsAndArguments
更改到列表commandOptions
,用參數檢測兩個選項並且沒有適當的參數?我不確定我應該用什麼詞來描述使用等號的方式來指定參數。而不是用空格命令選項)
您如何期望在說--suppressions和--mySpecialFlag之間做出區別?基於格式(破折號分隔vs CamelCase)? – d6bels 2015-02-24 13:37:12
是的,這是一個問題,我正在尋找建議。你會建議一個合理的方法嗎? – d3pd 2015-02-24 13:44:38
我沒有看到任何簡單和優雅的東西,可能取決於你如何建立這個列表或你可以改變多少。 – d6bels 2015-02-24 13:50:41