我正在编写一个简单的Python脚本来导出,导入和区分数据库。我想让用户提供他们想要运行脚本的“模式”,我选择import,export和diff作为我的选项。当我通过argparse运行它时,所有解析的选项都以args结尾,我可以使用arg.export或args.diff访问它们,但由于“import”是一个关键字,我遇到了问题。
我可以做一些改变的工作,以使其工作,但我想知道是否可以保留我拥有的东西。例如,我可以将选项缩短为“exp”,“imp”和“diff”,或者我可以做一个名为“mode”的选项,希望传入“import”,“export”或“diff”。 / p>
我目前的代码:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("--export", help="Export source(s)", action="store_true")
group.add_argument("--import", help="Import source(s)", action="store_true")
group.add_argument("--diff", help="Diff sources", action="store_true")
parser.add_argument("filename", help="XML Filename used for exporting to, importing from or comparing while doing diff.")
args = parser.parse_args()
if args.export:
export_sources(args.filename)
elif args.import:
import_sources(args.filename)
elif args.diff:
diff_sources(args.filename)
答案 0 :(得分:4)
好吧,如果我使用“dest”,我仍然可以使用--import,但让它在内部进入“imp”。
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument("--export", help="Export source(s)", action="store_true")
group.add_argument("--import", dest="imp", help="Import source(s)", action="store_true")
group.add_argument("--diff", help="Diff sources", action="store_true")
parser.add_argument("filename", help="XML Filename used for exporting to, importing from or comparing while doing diff.")
args = parser.parse_args()
if args.export:
export_sources(args.filename)
elif args.imp:
import_sources(args.filename)
elif args.diff:
diff_sources(args.filename)
答案 1 :(得分:2)
您也可以使用getattr
访问已解析的参数:
parser = argparse.ArgumentParser()
parser.add_argument('--import')
args = parser.parse_args()
import_value = getattr(args, 'import', None) # defaults to None
或检查参数是否存在,然后将其读入变量:
# [...]
if hasattr(args, 'import'):
import_value = getattr(args, 'import')