<p>我希望创建一个具有以下结构的参数解析器:</p>
<pre><code>options [ 'backup', 'consistency_check', 'backup_and_consistency_check']
--database [ required ]
--action [ required choice from list options ]
--where_to_backup_to [ only required if --action is 'backup' ]
--what_file_to_consistency_check [ only required if --action is 'consistency_check']
--clean [ optional ]
--force [ optional if --clean is also in arguments ]
</code></pre>
<p>如何使用ArgumentParser模块实现可选参数,这取决于作为另一个命令行参数所做的选择。在</p>
<p>如果命令行参数是</p>
^{pr2}$
<p>这就是我到目前为止所得到的(我知道这很少,但如果我从一开始就没有把它弄对的话,我不想让次纵火犯走上完全错误的方向)</p>
<pre><code>actions = ['backup', 'consistency_check', 'backup_and_consistency_check']
def create_parser():
parser = ArgumentParser(description='Parser for Backup / Consistency Check')
parser.add_argument('--database', '-d', dest='db', help='Database name', choices=get_active_database_list())
parser.add_argument('--action', '-a', dest='action', help='Action option', choices=actions)
# --where_to_backup_to [ only if action = backup ]
# --what_file_to_consistency_check [ only if action = cc ]
parser.add_argument('--clean', '-c', dest='clean', help='Clean')
# --force [ only available if --clean is also in arguments ]
return parser
</code></pre>