Python无法识别我的所有命令行参数

2024-04-26 23:12:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道这是否只是一个新手的错误,但是Python并没有认识到我所有的论点。我正在使用bash,所以可能这就是问题所在。我有一个名为-vs的工作参数,我试图让它在它后面检测一个必要的整数,因此适当的语法是program.py -vs 5,或者某个整数。但是,它不承认“5”。当我把破折号(-)放在它旁边,让它以一个字母开头时,它就会这样。我怎样才能让Python看到这个?你知道吗

下面是代码片段:

elif arg == "-vs" or "--vertical-spacing":
        if int(sys.argv[argnum + 1]) >= 0:
            vspacing = int(sys.argv[argnum + 1])
        else:
            print "Invalid Spacing: Less than zero (Ya can't have negative spacing, silly!)"

            sys.exit()

顺便说一下,每当我循环这些参数时,argnum变量都会增加1。(我使用的是for arg in sys.argv[1:]。不用担心,我将argnum启动为0,循环时首先递增argnum,这样它就看不到程序路径和/或名称,或者sys.argv[0]。你知道吗


Tags: bash参数错误sys语法arg整数program
1条回答
网友
1楼 · 发布于 2024-04-26 23:12:35

下面是一个使用argparse的示例:

if __name__ == '__main__':
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("-vs", " vertical-spacing", type=int, dest="vertical_spacing", help="vertical spacing. must be > 0")

    args = parser.parse_args()
    if not args.vertical_spacing:
      print "Invalid Spacing: Less than zero (Ya can't have negative spacing, silly!)"
      sys.exit()

    some_function(args.vertical_spacing)

相关问题 更多 >