嗨,夥計們。python optparse的異常處理
我正在使用cmd和optparse來爲已有功能的類(CDContainer,CD等)集合開發CLI.py。以下是代碼的一些部分。我在這裏遇到問題。當出現異常(錯誤的輸入類型或缺失值)時,optparse將退出整個程序而不是特定的命令方法。
import cmd
class CLI(cmd.Cmd):
def do_addcd(self, line):
args=line.split()
parser = OptionParser()
parser.add_option("-t", "--track", dest="track_number", type="int",
help="track number")
parser.add_option("-n", "--cdname", dest="cd_name", type="string",
help="CD name")
(options, positional_args) = parser.parse_args(args[0:])
cd_obj= CD()
cd_obj.addCD(options.track_number, options.cd_name)
在 「>蟒」,如果I型CLI.py, 然後我將具有(CMD),所以可以輸入像命令 「(CMD)addcd -t 3 -n驚悚片」。 但如果我輸入「addcd -t r -n 3」,則optparse將終止整個CLI.py並退出。 這對我不好。我想提醒用戶每種方法,而不是終止整個程序。
但是,optparse文檔顯示「整個程序退出」。所以我不能「盲目」地使用optparse。我能做什麼?
我明白了。那麼我不使用optparse?我自己解析參數並相應地進行分析。如果我使用optparse,正如你所說的那樣,我應該以某種方式覆蓋它的退出或錯誤方法,但我並不確信我能做到。 – pepero 2010-10-25 12:20:49
我會堅持optparse。它將保持選項解析行爲一致,並且編寫遵循常規約定的參數解析器將是很多工作。 我已經用覆蓋錯誤方法的示例更新了我的答案。 – 2010-10-25 12:39:50
嗨,Robie,非常感謝你用代碼的詳細回答!它符合我的意圖!但只有一件事,當我調用method -help,例如addcd -h時,它會列出選項,然後退出程序。是否有可能解決它的「幫助」。非常感謝! – pepero 2010-10-25 13:03:10