【问题标题】:Prevent python script to run without user input any optional argument [closed]防止python脚本在没有用户输入任何可选参数的情况下运行[关闭]
【发布时间】:2020-02-10 11:21:15
【问题描述】:

有一个 python 脚本并使用 argparse 我定义了一些可选参数,这些参数可以在运行脚本之前由用户给出。如果用户没有输入任何定义的可选参数(python example.py -> 给出错误消息),我希望不允许脚本运行。关于如何做到这一点的任何想法?

【问题讨论】:

  • 我不想将 required=True 用于任何可选参数。
  • 这有点令人困惑(至少对我来说)。如果脚本需要传递一个可选参数,那么它就不再是可选的了。

标签: python


【解决方案1】:

第一个答案很好。 或者,如果在脚本开头,您可以使用 simlpe。

import sys

if (len(sys.argv) < x):
    sys.exit("error message here")

其中 x 是您要查找的参数数量。 否则你可以使用 argparser 或手动检查

argv[2] == "-b"

【讨论】:

    【解决方案2】:

    您可以将if 语句与对参数命名空间的所有值使用any 函数的表达式一起使用,以测试是否给出了任何选项,如果没有给出任何选项,则打印用法并退出:

    import sys
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('-a')
    parser.add_argument('-b')
    args = parser.parse_args()
    if not any(vars(args).values()):
        parser.print_usage()
        sys.exit()
    

    【讨论】:

    • 是的,我可以通过添加使用 any 函数的 if 语句来处理这种情况。但是有没有办法在添加可选参数时使用特定的标志来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2021-10-19
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多