在python脚本中使用命令行参数

时间:2011-12-20 21:35:37

标签: python argparse optparse

我对python比较陌生。我想写一个脚本并传递它的参数如下:

myscript.py --arg1=hello --arg2=world

在脚本中,我想访问参数arg1和arg2。任何人都可以解释如何以这种方式访问​​命令行参数吗?

4 个答案:

答案 0 :(得分:5)

Argparse是标准库的一部分(从版本2.7和3.2开始)。这是我用来处理所有命令行解析的模块,尽管还有optparse(现已弃用)和getopt

以下是如何使用argparse的简单示例:

import sys, argparse

def main(argv=None):

    if argv is None:
        argv=sys.argv[1:]

    p = argparse.ArgumentParser(description="Example of using argparse")

    p.add_argument('--arg1', action='store', default='hello', help="first word")
    p.add_argument('--arg2', action='store', default='world', help="second word")

    # Parse command line arguments
    args = p.parse_args(argv)

    print args.arg1, args.arg2

    return 0

if __name__=="__main__":
    sys.exit(main(sys.argv[1:]))

修改:请注意,在add_arguments调用中使用前导' - '会使arg1arg2成为可选参数,所以我有提供的默认值。如果你想编程需要两个参数,删除这两个主要的超量,它们将成为必需的参数,你不需要default=...选项。 (严格来说,您也不需要action='store'选项,因为store是默认操作。)

答案 1 :(得分:2)

http://docs.python.org/library/argparse.html#module-argparse

简单的例子可以帮助

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)

答案 2 :(得分:1)

查看标准库附带的argparse模块。一旦你习惯了它,它就会变得轻而易举,它非常强大。这是一个tutorial。建议使用它而不是optparse或getopt模块。

如果您不想使用模块但仍想访问参数,请查看sys module。您将需要查看sys.argv。

答案 3 :(得分:1)

Python提供了3种不同的解析命令行参数的方法,不包括您使用对参数列表的原始访问自己编写的任何方法。

http://docs.python.org/dev/whatsnew/2.7.html#pep-389-the-argparse-module-for-parsing-command-lines

  

用于解析命令行参数的argparse模块已添加为   更强大的替代optparse模块。

     

这意味着Python现在支持三种不同的模块进行解析   命令行参数:getopt,optparse和argparse。 getopt   模块非常类似于C库的getopt()函数,所以它   如果你正在编写一个Python原型,它仍然有用   最终被改写为C. optparse变得多余,但那里   没有计划删除它,因为有许多脚本仍在使用   它,并没有自动更新这些脚本的方法。 (制作   讨论了与optparse接口一致的argparse API   因为过于混乱和困难而被拒绝。)

     

简而言之,如果您正在编写新脚本而不必担心   与早期版本的Python兼容,使用argparse而不是   optparse。