如何指定某些命令行参数在Python中是必需的?

如何指定某些命令行参数在Python中是必需的?,python,command-line,Python,Command Line,我正在用Python编写一个接受命令行参数的程序。我正在用getopt解析它们(尽管我选择getopt不是天主教婚姻。我非常愿意使用任何其他库)。有没有办法指定必须给出某些参数,或者我必须手动确保所有参数都给出了 编辑:为了回应公众的强烈抗议,我将option的所有实例都改为Argume。不要说我对帮助我的人没有反应:-)最简单的方法就是自己动手。即 found_f = False try: opts, args = getopt.getopt(sys.argv[1:], "ho:v",

我正在用Python编写一个接受命令行参数的程序。我正在用
getopt
解析它们(尽管我选择
getopt
不是天主教婚姻。我非常愿意使用任何其他库)。有没有办法指定必须给出某些参数,或者我必须手动确保所有参数都给出了


编辑:为了回应公众的强烈抗议,我将option的所有实例都改为Argume。不要说我对帮助我的人没有反应:-)

最简单的方法就是自己动手。即

found_f = False
try:
    opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError, err:
    print str(err)
    usage()
    sys.exit(2)
for o, a in opts:
    if o == '-f':
      process_f()
      found_f = True
    elif ...
if not found_f:
    print "-f was not given"
    usage()
    sys.exit(2)
至于我,我更喜欢使用,它非常强大,例如,它可以根据给定的选项自动生成-h消息:

from optparse import OptionParser

parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")

(options, args) = parser.parse_args()
您应该手动检查是否提供了所有参数:

if len(args) != 1:
        parser.error("incorrect number of arguments")

对我来说,强制期权似乎很奇怪-它们被称为期权并非毫无意义…

我一直在寻找一种不自己做的方法,但如果没有,那么我想这就是答案。如果必须给出值,但你可以选择给出哪个值,那么它仍然是一个选项,不是吗?你叫它什么?对不起,我还不明白这个的目的。您能否给我举个例子,例如描述cli输入?不是你要解决的问题,只是任何…当然。我正在写一个可以在文件上运行的脚本。如果您不指定文件名,脚本将不知道要处理什么,因此文件名是必需的。因此,就optpass而言,这是参数(“上面代码中的args”),不幸的是,正如我所写的,您应该手动检查它们…+1以了解天主教婚姻隐喻。这让我笑了。“强制选择”是矛盾的。你是说“争论”。而且--看起来--你指的是带有“选项”语法的“参数”。这里很好地定义了选项/参数:这里: