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

问题描述 投票:8回答:2

这是我的剧本

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并简单地通过commandlineargument运行commandlineargument(n)

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

python for-loop command-line-arguments argv sys
2个回答
20
投票

由于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
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.