我正在開發一個管理腳本,它通過大量的命令行選項執行相當大量的工作。腳本的前幾次迭代使用optparse來收集用戶輸入,然後在頁面上運行,按照適當的順序測試每個選項的值,並在必要時執行操作。這導致了一堆難以閱讀和維護的代碼。命令行arg通過自省進行解析
我正在尋找更好的東西。我希望有一個系統,我可以用或多或少的普通Python方式編寫函數,然後當腳本運行時,從我的函數生成選項(和幫助文本),解析並執行適當的順序。此外,我真的希望能夠建立的Django風格的子命令接口,其中myscript.py install
作品完全分開myscript.py remove
(不同的選項,幫助等)
我發現simon willison's optfunc,並做了很多這個,但似乎只是錯過了標記 - 我想寫每個選項作爲一個函數,而不是試圖將整個選項集壓縮成一個巨大的選項集。
我想象一個架構涉及一組主要功能的類,並且每個定義的類的方法都對應於命令行中的一個特定選項。這種結構提供了將每個選項駐留在其修改的功能代碼附近的優點,從而簡化了維護。我不知道如何處理的是命令的排序,因爲類方法的排序不是確定性的。
在我重新發明車輪之前:是否還有其他現有的代碼行爲類似?其他事情很容易修改?問這個問題澄清了我自己對什麼是好的想法,但是爲什麼這是一個可怕的想法或者它應該如何工作的反饋是值得歡迎的。
謝謝,這似乎是很好的建議。 – 2009-08-30 14:22:57
這很棒! – 2017-09-27 21:12:38