Python 3:测试命令行参数

时间:2013-01-10 04:05:34

标签: python python-3.x

我是Python的新手。我想编写一个在Linux上运行的脚本。 测试用户是否输入所有脚本参数:

  • 如果用户输入:myscript => print "Usage: myscript [Dir] [Old] [New]"
  • 如果用户输入:myscript Dir => print "Please enter Old and New"
  • 如果用户输入:myscript Dir Old => print "Please enter New"
  • 如果用户键入所有必需的参数,则执行main()。

如何编写myscript代码?

3 个答案:

答案 0 :(得分:7)

#! /usr/bin/python3.2

import sys

if __name__ == '__main__':
    if len (sys.argv) < 4:
        print ( ['Usage: myscript [Dir] [Old] [New]',
            'Please enter Old and New',
            'Please enter New'] [len (sys.argv) - 1] )

或者你可以使用argparse。这不符合你在问题中所要求的,但它有望安抚J.F. Sebastian。

#! /usr/bin/python3.2

import argparse

if __name__ == '__main__':
    p = argparse.ArgumentParser (description = 'What your program does.')
    p.add_argument ('dir', metavar = 'dir', type = str, help = 'The directory')
    p.add_argument ('old', metavar = 'old', type = str, help = 'The old value')
    p.add_argument ('new', metavar = 'new', type = str, help = 'The new value')
    args = p.parse_args ()

答案 1 :(得分:2)

只需检查len(sys.argv)的值即可。请注意,第一个参数将是python文件名本身。

像这样:

import sys

argc = len(sys.argv)

if argc < 2:
    print "Usage: myscript [Dir] [Old] [New]"
    sys.exit();
elif argc < 3:
    print "Please enter Old and New"
    sys.exit();
elif argc < 4:
    print "Please enter New"
    sys.exit();

main()

答案 2 :(得分:0)

运行脚本时传递的所有参数都将放在sys.argv中。您必须先import sys。然后按照您的意愿查看参数。您可以考虑计算您有多少参数来决定要做什么。请注意,第一个参数始终是脚本的名称。