我想驗證一個字符串的有效性,以確保它是一個合法的命令,我可以傳遞給終端。如果字符串通過測試,則返回True。否則,我會返回False並顯示錯誤消息。驗證碼
我的代碼很糟糕,很多嵌套的if語句 - 我該如何改進它?
task = task.split()
if len(task) > 1:
if task[0] == 'svn':
if task[1] in ALLOWED:
if len(task[2:]) == ALLOWED[task[1]]:
return True, task, None
else:
return False, "Incorrect number of arguments."
else:
return False, "Not a legal command."
else:
return False, "Not a subversion command."
else:
return False, "Invalid input"
如果「到終端」你真的是「以殼」,這是一個壞主意。如果你有安全考慮,你仍然容易受到注入炮彈的影響。確保你沒有調用shell,並使用'subprocess'模塊。而不是返回一個布爾,你可能想引發一個異常。 – Julian 2012-07-30 22:54:08