main中的python命令行参数,跳过脚本名称

时间:2013-09-25 23:10:51

标签: python for-loop command-line-arguments argv sys

这是我的剧本

def main(argv):
    if len(sys.argv)>1:
        for x in sys.argv:
            build(x)

if __name__ == "__main__":
    main(sys.argv)

所以从命令行我写python myscript.py commandlineargument

我希望它跳过myscript.py,只需运行commandlineargumentcommandlineargument(n)

所以我理解我的for循环没有考虑到这一点,但我该怎么做呢?

2 个答案:

答案 0 :(得分:18)

由于sys.argv是一个列表,您可以使用切片sys.argv[1:]

def main(argv):
    for x in argv[1:]:
        build(x)

if __name__ == "__main__":
    main(sys.argv)

但是,如果你只能有一个脚本参数,只需按索引获取它:sys.argv[1]。但是,您应检查sys.argv的长度是否大于1,如果不是则抛出错误,例如:

def main(argv):
    if len(argv) == 1:
        print "Not enough arguments"
        return
    else:
        build(argv[1])

if __name__ == "__main__":
    main(sys.argv)

答案 1 :(得分:1)

但真正的答案是了解并使用argparse