18

这是我的脚本

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 循环没有考虑到这一点,但我该如何让它做到这一点?

4

2 回答 2

31

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

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

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

但是,如果你只能有一个脚本参数,只需通过 index: 获取它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)
于 2013-09-25T23:12:05.550 回答
2

不过,真正的答案是学习和使用argparse.

于 2013-09-25T23:31:11.140 回答