我要做的是:import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-d', ' dry-run', action='store_true')
parser.add_argument('input_file', type=argparse.FileType('r'))
parser.add_argument('servername', nargs='?')
args = parser.parse_args()
if args.servername is None and not args.dry_run:
parser.error("Option 'servername' is required when not in dry-run mode.")
print args
示例:
^{pr2}$
您也可以使用自定义操作来执行此操作,该操作具有相同的效果:class ServernameAction(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
if values is None and not namespace.dry_run:
parser.error("Option 'servername' is required when not in dry-run mode.")
setattr(namespace, self.dest, values)
...
parser.add_argument('servername', nargs='?', action=ServernameAction)
...